将 Django 升级到新版本 — Django 文档

来自菜鸟教程
Django/docs/2.2.x/howto/upgrade-version
跳转至:导航、​搜索

升级 Django 到最新的版本

虽然有时是个复杂的过程,将 Django 升级到最新版有以下好处:

  • 新功能和优化
  • 已修复的 bug。
  • 旧版本的 Django 最终将不再接收安全更新。 (请参阅 支持的版本 )。
  • 随着每个新 Django 发行版的发布而升级,可以使您的代码库保持最新,从而减少将来升级带来的痛苦。

有些事情需要你考虑,这有助于使升级流程尽可能顺滑。

必读内容

如果这是您第一次进行升级,阅读有关不同发布过程 指南会很有用。

随后,你要自主熟悉 Django 新版本的修改:

  • 阅读 发行说明 ,了解当前 Django 版本之后的每个“最终”版本,直到并包括您计划升级到的版本。
  • 相关版本查看【X12X】弃用时间线【X36X】。

特别注意向前兼容修改,清楚了解成功的升级需要做什么。

如果您要升级多个功能版本(例如 AB 到 A.B+2),通常更容易通过每个功能版本增量升级(AB 到 A.B+1 到 A.B+2),而不是一次对每个功能版本进行所有更改。 对于每个功能版本,使用最新的补丁版本 (ABC)。

从一个长期支持(LTS)版本更新至下一个长期更新版本时,特别推荐同样的增量更新方法。


依赖

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


处理过期警告

在升级之前,最好在使用当前版本的 Django 时解决项目引发的任何弃用警告。 在升级之前修复这些警告可确保您了解需要更改的代码区域。

在 Python 中,弃用警告默认是静音的。 您必须使用 -Wa Python 命令行选项或 PYTHONWARNINGS 环境变量打开它们。 例如,要在运行测试时显示警告:

如果您没有使用 Django 测试运行器,您可能还需要确保没有捕获任何控制台输出,这会隐藏弃用警告。 例如,如果您使用 py.test:

$ PYTHONWARNINGS=always py.test tests --capture=no

在继续升级流程前处理当前 Django 版本报告的所有过期警告。

第三方应用程序可能会使用已弃用的 API 来支持多个版本的 Django,因此您安装的软件包中的弃用警告不一定表示存在问题。 如果包不支持最新版本的 Django,请考虑提出问题或为其发送拉取请求。


安装

准备就绪后,就可以 安装新的 Django 版本 。 如果您正在使用 virtualenv 并且这是一次重大升级,您可能需要先设置一个包含所有依赖项的新环境。

如果您使用 pip 安装 Django,则可以使用 --upgrade-U 标志:


测试

设置新环境后, 为您的应用程序运行完整的测试套件 。 同样,打开弃用警告很有用,以便它们显示在测试输出中(如果您使用 manage.py runserver 手动测试您的应用程序,您也可以使用该标志):

运行测试后,修复所有故障。 虽然您对发行说明记忆犹新,但现在也可能是通过重构代码来消除任何弃用警告来利用 Django 中的新功能的好时机。


部署

当您有足够的信心您的应用程序可以与新版本的 Django 配合使用时,您就可以继续并 部署 升级后的 Django 项目。

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