【发布时间】:2011-01-03 00:35:14
【问题描述】:
似乎有两种方法可以将 django 1.1 与 GAE 一起使用
我们目前使用第一个。我们应该换吗?两者有什么区别?
【问题讨论】:
似乎有两种方法可以将 django 1.1 与 GAE 一起使用
我们目前使用第一个。我们应该换吗?两者有什么区别?
【问题讨论】:
仅供参考,至少还有一种方法可以在 GAE 中获取 Django 1.1。
看看http://code.google.com/p/app-engine-patch/
它允许使用大多数 Django 功能,包括 Admin。
【讨论】:
use_library 在生产环境中加载一个未打补丁的 django 版本,所以很多东西在 app-engine 上都无法开箱即用。
帮助程序将一系列补丁应用于 django 库以启用会话、测试、缓存框架等功能。如果您没有将自己的 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 副本的优点之一是,当 google 应用安全补丁时,您会自动获取它们,而无需重新部署您的应用程序。
【讨论】:
app-engine-patch 似乎已经死了:
http://code.google.com/p/app-engine-patch/issues/detail?id=253
【讨论】:
替代品称为 django-nonrel(和 djangoappengine)...您可以在以下位置找到它 http://www.allbuttonspressed.com ... 使用 django-nonrel,您应该能够在 App Engine 之上运行纯 Django 应用程序,而无需调整您的模型!
【讨论】:
从 GAE 1.5.0 开始,有一种更简单的方法来指定 Django 版本。
在appengine_congif.py 中,包含该行
webapp_django_version = '1.2'
这将导致use_libary() 在幕后发生。
【讨论】: