Django的版本更新比较频繁,基本上一年至少升级一次。那么如何升级项目的Django版本呢? 一个简单解决方法是使用pip升级,如下所示。如果你不指定Django版本号, 那么pip将安装最新Django发布版本。
pip install --upgrade django==3.1.0
如果事情真是这么简单就好了。每次Django升级都会放弃对低版本Python及老版本数据库的支持,并且还会弃用一些方法或功能。尽管升级Django版本有很多因素需要考虑,但升级还是有很多好处的,比如:
添加了新功能和改进。
错误已修复。
较旧版本的Django最终将不再收到安全更新。
在每个新的Django版本可用时进行升级,使代码库保持最新,从而减轻了以后的升级工作量。
本文总结了在升级Django版本过程中一些需要考虑的事项,可以帮助您使升级过程尽可能的顺利。
在升级前,您首先应该熟悉新Django版本中所做的更改:
从当前Django版本之后的版本(直到您计划升级到的版本), 开始阅读每个“最终”版本的发行说明。
查看相关版本的弃用时间表。
要特别注意向后不兼容的更改,以清楚地了解成功升级所需的内容。在大多数情况下,升级Django版本时需要检视是否需要对现有项目代码进行修改,不能只升级Django版本就完了。
如果你的版本升级跨越多个版本(比如从2.0到2.2), 官方推荐先对比每个版本的变化((从2.0到2.1到2.2),进行逐级升级。对于每个功能版本,请使用最新的修补程序版本(例如,对于2.1,请使用2.1.15)。从一个LTS升级到另一个LTS时,建议使用相同的增量升级方法。
如果你希望及时了解Django各个版本的最新变化,请关注大江狗的微信公众号【Python Web与Django开发】。
相关阅读
Django 3.2主要变化抢先看!
Django 3.1版本正式发布,主要变化有哪些?
支持异步的Django 3.X来了,你准备好了吗? Django 3.0新特色与变化详解。
依赖
在大多数情况下,也有必要升级到与Django相关的依赖项的最新版本。如果Django版本是最近发布的,或者如果您的某些依赖项维护得不好,则您的某些依赖项可能尚未支持新的Django版本。在这些情况下,您可能必须等到依赖项的新版本发布后再升级到最新Django版本。
在升级Django版本时,以下几个依赖项检查必需铭记于心:
新版Django是否支持现有Python版本,是否需要同时升级Python版本
通过PIP安装的第三方包是否支持现有Python版本和Django版本,是否需要升级
新版Django是否支持现有数据库版本,是否需要升级数据库
举个例子:
2020年8月发布的Django 3.1版本仅支持Python 3.6, 3.7和3.8版本,如果你的Python版本还是3.5版,光升级Django版本是不够的。
解决弃用警告
升级之前,最好解决使用当前版本的Django时项目引起的所有弃用警告。在升级之前先修复这些警告可帮助你了解需要对哪些代码进行修改。
在Python中,弃用警告默认会被静音。您必须使用python -Wa 命令行选项或配置PYTHONWARNINGS 环境变量。例如,要在运行测试时显示警告:
$ python -Wa manage.py test
如果您使用pytest,你可以使用如下命令:
PYTHONWARNINGS=always pytest tests --capture=no
第三方应用程序可能会使用一些弃用的API,以支持Django的多个版本,因此,已安装的第三方软件包中出现弃用警告不一定表示存在问题。如果软件包不支持最新版本的Django,请考虑提出问题或发送请求。
准备就绪后,你就可以安装新的Django版本了。如果你使用的是虚拟环境且这是一次重大更新,建议先设置所有依赖项的新环境。
如果您使用pip安装了Django ,则可以使用--upgrade或-U选项升级:
$ python -m pip install -U Django
设置新环境和升级Django版本后,还请为您的应用程序运行完整的测试套件。这时启用弃用警告同样很有用。使用如下命令,弃用警告就会显示在测试输出中:
$ python -Wa manage.py test
运行测试后,请修复所有故障。当您有了新的发行说明时,通过重构代码以消除任何过时的警告,也可能是利用Django中新功能的好时机。
升级Django版本你学会了吗?
大江狗
2020.10.24
相关阅读
Django基础(39): 如何给数据库添加约束(Constraints)
Django基础(38): 如何设置支持多语种网站及国际化
Django上传图片不成功,不能显示或不能更新问题汇总及解决方案集锦
Django更改模型过程中易出现的问题及解决方案