Структура проекта для Google App Engine

Потому что вы передаете копию указателя. Чтобы изменить указатель, вам нужно что-то вроде этого:

void foo(int **ptr) //pointer to pointer
{
    *ptr = new int[10]; //just for example, use RAII in a real world
}

или

void bar(int *& ptr) //reference to pointer (a bit confusing look)
{
    ptr = new int[10];
}
119
задан Serenity 31 July 2016 в 10:02
поделиться

5 ответов

Во-первых, я предложил бы, чтобы Вы взглянули на" Быстрая разработка с Python, Django и Google App Engine "

, GvR описывает общее/стандартное расположение проекта на странице 10 его слайдовая презентация .

Здесь, я отправлю немного измененную версию расположения/структуры от той страницы. Я в значительной степени следую за этим шаблоном сам. Вы также упомянули, что испытали затруднения из-за пакетов. Просто удостоверьтесь, что каждая из Ваших sub папок имеет __ init __. файл py. Это в порядке если его пустое.

Шаблонные файлы

  • Они едва варьируются между проектами
  • app.yaml: прямой все нестатические запросы к main.py
  • main.py: инициализируйте приложение и отправьте, все это запрашивает

расположение Проекта

  • статичный /*: статические файлы; подаваемый непосредственно Механизмом Приложения
  • myapp / *.py: определенный для приложения код Python
    • views.py, models.py, tests.py, __ init __. py и больше
  • templates/*.html: шаблоны (или myapp/templates/*.html)

Вот являются некоторыми примерами кода, которые могут помочь также:

main.py

import wsgiref.handlers

from google.appengine.ext import webapp
from myapp.views import *

application = webapp.WSGIApplication([
  ('/', IndexHandler),
  ('/foo', FooHandler)
], debug=True)

def main():
  wsgiref.handlers.CGIHandler().run(application)

myapp/views.py

import os
import datetime
import logging
import time

from google.appengine.api import urlfetch
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext import webapp
from models import *

class IndexHandler(webapp.RequestHandler):
  def get(self):
    date = "foo"
    # Do some processing        
    template_values = {'data': data }
    path = os.path.join(os.path.dirname(__file__) + '/../templates/', 'main.html')
    self.response.out.write(template.render(path, template_values))

class FooHandler(webapp.RequestHandler):
  def get(self):
    #logging.debug("start of handler")

myapp/models.py

from google.appengine.ext import db

class SampleModel(db.Model):

я думаю это разметки, большие для новых и относительно малых и средних проектов. Для больших проектов я предложил бы разбить представления и модели для имения их собственных подпапок с чем-то как:

расположение Проекта

  • статический/: статические файлы; подаваемый непосредственно Механизмом Приложения
    • js / *.js
    • отображает / *.gif|png|jpg
    • css / *.css
  • myapp/: структура приложения
    • модели / *.py
    • просматривает / тесты *.py
    • / *.py
    • templates/*.html: шаблоны
104
ответ дан 24 November 2019 в 01:51
поделиться

Мое обычное расположение выглядит примерно так:

  • app.yaml
  • index.yaml
  • request.py - содержит основной lib приложения
  • WSGI
    • __init__.py - общая функциональность, включая базовый класс
  • обработчика запросов, контроллеры - содержат все обработчики. request.yaml импортирует их.
  • шаблоны
    • все шаблоны django, используемые контроллерами
  • модель
    • все классы модели хранилища данных
  • статичный
    • статические файлы (css, изображения, и т.д.). Отображенный на / помехах app.yaml

я могу обеспечить примеры того, что мой app.yaml, request.py, lib / , на который похожи init.py и демонстрационные контроллеры, если это не ясно.

16
ответ дан 24 November 2019 в 01:51
поделиться

Я думаю, что право преимущественной покупки считают лучшей практикой. И сделайте папку кода Вашим первым пакетом. Проект Rietveld, разработанный Guido van Rossum, является очень хорошей моделью для приобретения знаний из. Взгляните на него: http://code.google.com/p/rietveld

Относительно Django 1.0, я предлагаю, чтобы Вы начали использовать магистральный код Django вместо GAE, созданного в django порте. Снова, взгляните на то, как это сделано в Rietveld.

7
ответ дан 24 November 2019 в 01:51
поделиться

Я не совсем актуален на последних лучших практиках, и так далее когда дело доходит до размещения кода, но когда я сделал свое первое приложение GAE, я использовал что-то вдоль Вашей второй опции, где код и шаблоны друг рядом с другом.

было две причины этого - один, это сохранило код и шаблон поблизости, и во-вторых, у меня был имитатор расположения структуры каталогов тот из веб-сайта - создание, это (для меня) немного легче также помнит, где все было.

1
ответ дан 24 November 2019 в 01:51
поделиться

Мне нравится webpy , поэтому я использовал его как структуру шаблонов в Google App Engine.
Мои папки пакетов обычно организованы следующим образом:

app.yaml
application.py
index.yaml
/app
   /config
   /controllers
   /db
   /lib
   /models
   /static
        /docs
        /images
        /javascripts
        /stylesheets
   test/
   utility/
   views/

Здесь является примером.

3
ответ дан 24 November 2019 в 01:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: