Upgrading Django to a newer version

虽然它有时可能是一个复杂的过程,升级到最新的Django版本有几个好处:

  • 添加了新功能和改进。
  • Bug是固定的。
  • 旧版本的Django最终将不再接收安全更新。(请参阅Supported versions)。
  • 升级为每个新的Django版本可用,通过保持代码库更新,使未来的升级不那么痛苦。

这里有一些事情需要考虑,以帮助使您的升级过程尽可能顺利。

Required Reading

如果这是您首次升级,请阅读不同发布流程上的guide on the different release processes

之后,您应该熟悉在新的Django版本中所做的更改:

  • 阅读每个“最终”版本的release notes,从当前的Django版本开始,直到并包括计划升级到的版本。
  • 查看相关版本的deprecation timeline

特别注意向后不兼容的更改,以便清楚地了解成功升级需要什么。

Dependencies

在大多数情况下,还需要升级到与Django相关的依赖项的最新版本。如果Django版本是最近发布的,或者如果你的一些依赖项没有得到很好的维护,你的一些依赖项可能还不支持新的Django版本。在这些情况下,您可能必须等到新版本的依赖项释放。

Installation

准备好后,即可install the new Django version如果您使用virtualenv并且是主要升级,您可能需要首先设置一个包含所有依赖项的新环境。

您需要执行哪些步骤取决于您的安装过程。最方便的方法是使用pip--upgrade-U标志:

$ pip install -U Django

pip也会自动卸载先前版本的Django。

如果您使用其他安装过程,则可能需要手动uninstall the old Django version,并应查看完整的安装说明。

Testing

当新环境设置完成后,run the full test suite在Python 2.7+中,默认情况下会停用弃用警告。它是有用的打开警告,所以他们显示在测试输出(如果你使用manage.py runserver t2 >):

$ python -Wall manage.py test

运行测试后,修复任何故障。虽然您的发布说明是新鲜的,但也可以通过重构代码来消除任何弃用警告,从而充分利用Django中的新功能。

Deployment

当您充分确信自己的应用与新版本的Django配合使用后,即可开始使用deploy您升级的Django项目。

如果你使用Django提供的缓存,你应该考虑升级后清除缓存。否则,你可能会遇到问题,例如,如果你缓存pickled对象,因为这些对象不能保证在Django版本之间pickle兼容。过去的不兼容实例是直接或通过cache_page()装饰器间接缓存敏感的HttpResponse对象。