Python 我应该使用哪个版本的Django?

Python 我应该使用哪个版本的Django?,python,django,Python,Django,我刚刚接管了Django项目的代码,具有以下要求: Django==1.6.8 Pillow==2.6.1 South==1.0.1 django-grappelli==2.6.3 django-tastypie==0.12.1 requests==2.4.3 simplejson==3.6.5 python-amazon-product-api==0.2.8 MySQL-python==1.2.3 我是Django的新手,想知道我是否应该更新到更新的版本,或者继续使用1.6.8版是否合适?目

我刚刚接管了Django项目的代码,具有以下要求:

Django==1.6.8
Pillow==2.6.1
South==1.0.1
django-grappelli==2.6.3
django-tastypie==0.12.1
requests==2.4.3
simplejson==3.6.5
python-amazon-product-api==0.2.8
MySQL-python==1.2.3
我是Django的新手,想知道我是否应该更新到更新的版本,或者继续使用1.6.8版是否合适?目前使用的Python版本是2.7.6


在此阶段,我不想对代码进行太多更改。

如果您不想对代码进行任何更改,只需升级到django 1.6.X版本(出于安全原因)。我刚刚查看了页面,1.6中的最后一个版本是1.6.11,但此版本已弃用,将来将不会收到任何更新


如果您和您的团队正在使用virtualenv或vagrant之类的软件,并且进行了大量测试,您可以进行实验,但自1.6版以来,很多事情都发生了变化。

您应该升级。Django 1.6.X已经停止使用几个月,不再接收安全更新

在撰写本文时,它们分别是1.4.X LTS、1.7.X和1.8.X LTS。如果您不想经常升级,请升级到1.8.X,因为这是一个长期支持版本,将支持到2018年4月


您应该始终升级到最新的point版本,例如1.8.4到1.8.5,以确保您有最新的bug和安全修复。这些点版本尽可能向后兼容。通过运行1.6.8,您将丢失1.6.9-1.6.11中的错误修复和安全修复。但是,将不会有1.6.12版本,即使Django从1.6.11开始有其他安全版本,因为1.6现在已经过时了。

作为刚从该Django版本升级应用程序的人,我的经验如下:

好的

  • 升级到LTS版本将对您的未来有很大帮助。
    • 安全修复-您不希望在未修补的软件上运行生产应用程序
    • 到下一个LTS版本将有一个经过验证的迁移路径(我希望…)
    • 您将有一段很长的时间可以在下次升级(因为两个LTS版本之间有很长的重叠)
  • 如果要进行新的开发,实际上可能需要这些新特性
  • 它(IMHO)在一个关键组件上落后太多是不好的。在你必须迁移的那一天,可能没有一条清晰的迁移路径,等待你的还有很多令人头痛的事情
坏的

  • 很多事情都发生了变化,最明显的是南方被Django移民所取代。你必须彻底重新测试整个应用程序。某些第三方依赖项可能不起作用或需要升级,从而破坏您的应用程序
  • 您将丢失以前所有的南迁
丑陋的人

  • 由于South->Django迁移的问题,直接从1.6迁移到1.8存在一些问题。至少,您应该在生产数据库的副本上尝试几次迁移步骤

如果它起作用,几乎没有理由进行更新。最新版本现在有安全问题,所以…谢谢@taesu这正是我想听到的:)我想说你的问题是基于观点的。自1.6.8以来,已经有很多更新,您可能会发现一些更新的功能很有用。其中一个就是诅咒,新版本有很多改进,但是(imho)切换到版本>=1.7会很烦人,如果你不再需要处理它,那么它就不值得了。@taesu和Jiloc的评论忽略了1.6不受支持的事实,因此它错过了安全修复。问题不是“新的改进值得吗?”,而是“我能负担得起运行易受攻击的Django版本吗?”。1.8是否向后兼容,或者我是否可能需要更改某些代码?如果您来自<1.7版本,则必须更改某些代码。您可能必须更改某些代码。有关更多信息,请阅读发行说明。您可能会发现,首先升级到1.7,然后再升级到1.8是最简单的。我不必在
settings.py
之外做很多代码更改。从南方迁移数据库是我花费最多时间的事情。请参阅我的更新答案。PyCharm可能会给出一些关于反对意见的提示。然而,我不知道有什么方法可以在不阅读我链接到的发行说明的情况下顺利升级。我的直觉告诉我应该咬紧牙关升级,但目前我完全不清楚这需要做多少工作。有没有简单的方法来确定我的Django项目是否使用了South?这个问题可能会暴露出我是Django的新手。我想理想情况下,我需要一些方法来自动分析我的代码,以指出需要更改的内容。行
South==1.0.1
提示了这一点,但除非它是从您的设置中引用的。py否则您不会使用它。我的建议是对升级进行时间限制,花半天时间复制一个生产应用程序,看看你能走多远。如果你现在没有时间继续,至少你以后会大致知道需要付出多少努力。很难说这会有多困难,因为它与你的应用程序使用的功能有很大的不同。settings.py中提到South是一个已安装的_应用程序,但我在代码的其他任何地方都找不到它,所以它看起来好像没有实际使用。忘了提到,在应用程序目录中检查名为
migrations/
的目录。