我即将开始加入Django并开发一个我想在Google App Engine上部署的网络应用程序。我了解到谷歌已经在APP引擎上安装了Django 0.96,但我看到的最新“官方”版本的Django是1.2.3并且在那里安装它有点费力。
我很好奇哪个版本的Django使用最广泛。
那么,请您根据以下标准指导我应该根据哪个Django版本进行部署
非常感谢!
答案 0 :(得分:3)
大多数人目前正在使用Django 1.2。你不应该使用或学习Django .96 - 它非常古老,并且学习使用它不会让你为任何非app-engine Django工作做好准备,因为从那时起事情发生了很大变化。
App Engine上的Django很痛苦,因为你失去了很多ORM,这是使用Django的一个非常好的理由。您也无法简单地使用任何Django ORM插入插件和可重用的应用程序。任何带有models.py的东西都不起作用。
查看google-app-engine-django以获取更新版本的帮助。
http://code.google.com/p/google-app-engine-django/
有将GAE存储引擎集成到Django中的工作,并且有几个项目有不同的工作实现,但我不希望有一段时间真正好的ORM支持--1.3(距离发布还有几个月)将包括钩子可以更容易编写NoSQL后端,但Django可能不会附带一个。
虽然旧版本的Django有安全版本,但您应该使用最新的稳定版本进行开发。 Django的主要版本具有非常强大的向后兼容性承诺,因此当它出现时从1.2到1.3将是非常无缝的。
我强烈建议您在花费大量精力让事情发挥作用之前,仔细思考App Engine提供的具体应用程序。您丢失了应用程序的可移植性,扩展仍然很难,如果您的应用程序受欢迎,您不会省钱。 App Engine不是一个宽容的入门平台。
有关此主题的更多对话,请查看以下问题:
Why use Django on Google App Engine?
特别是我在那里的答案和对它的评论。
答案 1 :(得分:3)
应用引擎允许您使用google.appengine.dist.use_library
开箱即用的其他版本的django,只有一点点痛苦。实质上,你的main.py(由app.yaml
指定处理网址的模块)应如下所示:
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library # important bit
use_library('django', '1.1')
import django.core.handlers.wsgi
def main():
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
webapp.util.run_wsgi_app(application)
if __name__ == '__main__':
main()
答案 2 :(得分:0)
要考虑的另一件事是你如何安装。我一定要从SVN安装django,因为它可以让它更容易更新。
我一直在我的网站上使用dev版本一段时间,并且还没有遇到过一个bug,除了一个以较小的方式影响管理站点的一个(修复了svn)。
我不知道人们是使用1.2还是dev,但根据我的经验,dev非常适合。您在代码中可能遇到的任何重大错误都会很快得到修复,并且svn up会让您获得最新的代码,因为您很有可能会遇到重大错误的修订。