【问题标题】:Django development version vs stable releaseDjango 开发版 vs 稳定版
【发布时间】:2011-04-29 22:46:28
【问题描述】:

我即将开始使用 Django 并开发一个我想在 Google App Engine 上部署的网络应用程序。我了解到谷歌已经在 APP 引擎上安装了 Django 0.96,但我看到的最新“官方”版本的 Django 是 1.2.3,安装它有点费力。

我很好奇哪个版本的 Django 使用最广泛。

那么,您能否指导我根据以下标准升级和部署哪个 Django 版本

  1. 产品发布的稳定性和适用性
  2. 应用程序(或插件)的可用性以及社区最支持哪个版本

非常感谢!

【问题讨论】:

    标签: python django google-app-engine


    【解决方案1】:

    要考虑的另一件事是如何安装。我肯定会从 SVN 安装 django,因为它使更新变得更加容易。

    我在我的网站上使用开发版已经有一段时间了,还没有遇到过一个错误,除了一个以轻微方式影响管理网站的错误(已由 svn up 修复)。

    我不知道人们使用的是 1.2 还是 dev,但根据我的经验,dev 非常适合。您在代码中可能遇到的任何重大错误都会很快得到修复,并且 svn up 会在您获得带有重大错误的修订版时为您提供最新的代码。

    【讨论】:

    • 开发版相对稳定,但构建确实会定期损坏。它非常适合开发,但我不会在其上运行生产站点。
    【解决方案2】:

    应用引擎允许您使用google.appengine.dist.use_library 开箱即用地使用其他版本的 django,只需一点点痛苦。本质上,您的 main.py(app.yaml 指定的用于处理 url 的模块)应该如下所示:

    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()
    

    【讨论】:

    • 是的,但是 Django 不能在 App Engine 上开箱即用,这是问题的重点。
    • 以上代码是特定于应用引擎的。使用 0.98 是不合情理的,尽管它是使用 import django 导入的默认版本,但应用程序引擎有 1.1 可用,但几乎没有那么痛苦。它不是最新的,但对于大多数用途来说可能已经足够了。除非您需要 1.1 中没有的功能,否则上述方法比上传另一个版本更容易处理。
    【解决方案3】:

    目前大多数人都在使用 Django 1.2。您不应该使用或学习 Django .96 - 它非常古老,学习使用它不会让您为任何非应用程序引擎的 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?

    尤其是我的答案和上面的 cmets。

    【讨论】:

    • 谢谢!那么你在哪里部署你的 Django 应用程序呢?有什么建议吗?
    • 我想要一些可扩展且有免费配额的东西。我的预算很少,所以我在主机上的花费将取决于我获得的流量。
    • 我在 VPS 设置中使用 Rackspace 和 Slicehost 部署我的应用程序。由于我已经支付了托管费用,因此添加另一个小项目不会花费我任何费用,然后如果它增长,我可以将其拆分。您真的可以在大多数主机上部署 Django 应用程序。 “免费”最终会咬你一口。 Rackspace 产品非常便宜(我在带宽前支付 10 美元/月/服务器)。另一个易于扩展的选项是亚马逊的 AWS。他们目前正在为新客户提供一年的免费“微型”实例。 aws.amazon.com/free
    • 以上内容可能不适合您,因为管理服务器是一组非常专业的人才。如果那不是您的一杯茶,您可以考虑 Media Temple 的产品:mediatemple.net/webhosting/gs/features/containers.php
    • 显然我有偏见(我是 App Engine 团队的一员),但我对您的一些断言提出异议:AppScale (googleappengine.blogspot.com/2010/10/…) 和 TyphoonAE 等项目提供应用程序可移植性(code.google.com/p/typhoonae),缩放总是很难,但在 App Engine 上更容易,您确实可以省钱 (googleappengine.blogspot.com/2010/06/…),而且它是一个出色的入门平台 (@987654328 @)。
    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2015-11-25
    相关资源
    最近更新 更多