Django + Google App Engine:django或use_library的app引擎助手?

时间:2010-01-08 17:47:14

标签: django google-app-engine

似乎有两种方法可以使用django 1.1和GAE

我们目前使用第一个。我们应该转换吗?这两者有什么区别?

5 个答案:

答案 0 :(得分:9)

use_library在生产环境中加载未修补的django版本,因此很多东西在app-engine上无法正常使用。

帮助程序将一系列补丁应用于django库以启用诸如Sessions,test,cache framework等内容。如果您没有将自己的django副本添加到帮助应用程序中并且您使用的是最新版本(r100)或者更高),帮助程序首先尝试加载django 1.1,如果不成功则加载1.0。您可以在appengine_django/__init__.py::LoadDjango中看到此信息。

在生产GAE上,django 1.1始终存在,因此首先加载。

但是,在您的开发环境中,开发服务器SDK不会分发Django。因此,它使用它可以找到的任何版本的Django,首先尝试1.1然后尝试1.0,如果找不到,则抛出UnacceptableVersionError

您可能希望使用帮助程序而不是use_library,因为这样您将需要自己修补原始django库,从而复制帮助程序中的工作。无论您是分发自己的django版本,还是作为文件夹或zip文件由您决定。不发布您自己的django副本的一个好处是,当谷歌应用安全补丁时,您可以自动获取它们,而无需重新部署您的应用程序。

答案 1 :(得分:3)

替换被称为django-nonrel(和djangoappengine)......你可以在 http://www.allbuttonspressed.com ...使用django-nonrel,您应该可以在App Engine上运行纯Django应用程序,而无需调整模型!

答案 2 :(得分:1)

仅供参考,在GAE中至少还有一种方法可以获得Django 1.1。

查看http://code.google.com/p/app-engine-patch/

它允许使用大多数Django功能,包括Admin。

答案 3 :(得分:1)

答案 4 :(得分:1)

从GAE 1.5.0开始,有一种更简单的方法来指定Django版本。

appengine_congif.py中,加上

webapp_django_version = '1.2'

这将导致use_libary()发生在幕后。