Кажется, существует 2 способа использовать django 1.1 с GAE
Мы в настоящее время используем первое. Мы должны переключиться? И каково различие между двумя?
use_library
загружает неиспользованную версию джанго в производственном окружении, поэтому многие вещи не будут работать из коробки в app-engine.
Хелпер применяет ряд исправлений к библиотекам django, чтобы включить такие вещи, как Sessions, test, кэш-фреймворк и так далее. Если Вы не добавили собственную копию django в Ваше вспомогательное приложение и используете последнюю версию (r100 или выше), то сначала помощник пытается загрузить django 1.1, а если это не удается, то загружает 1.0. Вы можете увидеть это в appengine_django/__init__.py::LoadDjango
.
На производственном GAE, джанго 1.1 всегда существует, поэтому он загружается первым.
Однако в вашей среде разработки SDK сервера dev не распространяет Django. Поэтому он использует любую версию Django, которую может найти, сначала пытаясь найти 1.1, а затем 1.0, а если не может найти, то бросает UnacceptableVersionError
.
Вероятно, вы захотите использовать помощник, а не use_library
, потому что тогда вам придется самим исправлять необработанные библиотеки django, дублируя таким образом работу в помощнике. Вне зависимости от того, распространяете ли вы свою собственную версию django, в виде папки или zip-файла, зависит от вас. Одно из преимуществ того, что Вы не распространяете свою собственную копию django, заключается в том, что, поскольку Google применяет исправления безопасности, Вы автоматически получаете их без необходимости перераспространять Ваше приложение.
FYI, есть, по крайней мере, еще один способ получить Django 1.1 в GAE.
Взгляните на http://code.google.com/p/app-engine-patch/
Он позволяет использовать большинство функций Django, в том числе и Admin.
App-Engine-Patch, кажется, умер:
http://code.google.com/p/app-engine-patch/issues/detail?id=253
замена называется django-nonrel (и djangoappengine) ... вы можете найти ее по адресу http: // www.allbuttonspressed.com ... с django-nonrel вы сможете запускать чистые приложения Django поверх App Engine, не изменяя свои модели!