Django + Google App Engine: помощник движка приложений для django или use_library? - PullRequest
7 голосов
/ 08 января 2010

Кажется, есть 2 способа использовать django 1.1 с GAE

В настоящее время мы используем первый. Должны ли мы переключиться? И в чем разница между этими двумя?

Ответы [ 5 ]

9 голосов
/ 08 января 2010

use_library загружает непропатченную версию django в производственную среду, поэтому многие вещи не будут работать "из коробки" на app-engine.

Помощник применяет серию исправлений к библиотекам django, чтобы включить такие вещи, как Сеансы, тестирование, инфраструктура кэширования и т. Д. Если вы не добавляете свою собственную копию django в приложение-помощник и используете последний выпуск (r100) или выше), помощник сначала пытается загрузить django 1.1 и, если это не удается, загружает 1.0. Вы можете увидеть это в appengine_django/__init__.py::LoadDjango.

В производственном GAE django 1.1 всегда существует, поэтому он загружается первым.

Однако в вашей среде разработки SDK dev-сервера не распространяет Django. Поэтому он использует любую версию Django, которую может найти, сначала пробует 1.1, а затем 1.0, а если не может найти, то выбрасывает UnacceptableVersionError.

Возможно, вы захотите использовать помощник, а не use_library, потому что тогда вам нужно будет самостоятельно исправлять необработанные библиотеки django, дублируя таким образом работу помощника. Распространяете ли вы свою собственную версию django в виде папки или zip-файла, решать только вам. Одним из преимуществ отказа от распространения собственной копии django является то, что, поскольку Google применяет исправления безопасности, вы автоматически получаете их без повторного развертывания приложения.

3 голосов
/ 07 мая 2010

замена называется django-nonrel (и djangoappengine) ... вы можете найти ее в http://www.allbuttonspressed.com ... с django-nonrel вы сможете запускать чистые приложения Django поверх App Engine, не настраивая свои модели!

1 голос
/ 09 июня 2011

Начиная с GAE 1.5.0, существует гораздо более простой способ указать версию Django.

В appengine_congif.py включить строку

webapp_django_version = '1.2'

Это приведет к тому, что use_libary() произойдет под одеялом.

1 голос
/ 27 января 2010

app-engine-patch, кажется, умер:

http://code.google.com/p/app-engine-patch/issues/detail?id=253

1 голос
/ 08 января 2010

К вашему сведению, есть еще как минимум способ получить Django 1.1 в GAE.

Взгляните на http://code.google.com/p/app-engine-patch/

Это позволяет использовать большинство функций Django, включая Admin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...