似乎有两种方法可以使用django 1.1和GAE
我们目前使用第一个。我们应该转换吗?这两者有什么区别?
答案 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)
app-engine-patch似乎已经死了:
http://code.google.com/p/app-engine-patch/issues/detail?id=253
答案 4 :(得分:1)
从GAE 1.5.0开始,有一种更简单的方法来指定Django版本。
在appengine_congif.py
中,加上
webapp_django_version = '1.2'
这将导致use_libary()
发生在幕后。