热门Python网页框架Django,开发团队赶在2021年末,发布了第四主要更新版本,这个版本有大量新功能,有三个亮点特别值得注意,第一是使用新的RedisCache后端,提供内置Redis缓存支持,第二则是Forms、Formsets和ErrorList现在使用模板引擎渲染,来简化自定义工作,第三个亮点则是Django现在使用Python标准函数库zoneinfo作为默认时区实例。
Redis是一个内存数据库,能够被当作缓存使用,而在Django 4.0,开始提供内置Redis网页应用程序缓存支持,在使用之前,用户需要设置好Redis服务器,并且安装Python绑定,而redis-py则是Django 4.0原生支持的绑定接口。
而Django现在默认使用Python标准函数库中的zoneinfo,官方提到,这是从pytz转换到zoneinfo的下一阶段实行做法。在Django 3.2时,官方允许开发者使用非pytz时区,而到了Django 4.0,zoneinfo则成为默认实例,目前已经弃用pytz支持,并预计在Django 5.0中正式移除。
官方提到,zoneinfo是Python 3.9中Python标准函数库的一部分,如果用户使用的是Python 3.8,则backports.zoneinfo组件会在开发者安装Django时一并安装。目前时区的选择、日期时间表单和模板中的当前时区转换,还有UTC日期时间操作都不受默认时区实例改变影响。
但是当开发者使用的是非UTC时区,并且还在使用pytz normalize和localize API,或是其他TIME_ZONE设置,就需要重新查看程序代码,因为pytz和zoneinfo并不完全相等。官方提供开发者搬迁的宽缓时间,使用过渡USE_DEPRECATED_PYTZ配置,就可以在Django 4.0中继续使用pytz,但是该配置会在Django 5.0时删除。
另外,由zoneinfo作者所开发的pytz_deprecation_shim组件,可以协助开发者搬迁程序代码,更顺利地衔接使用zoneinfo,该组件提供了垫片层,让开发者安全地删除pytz,并且有详细的搬迁指南,说明搬迁到zoneinfo API的细节。
官方提到,随着Django 4.0的发布,Django 3.2的主要支持已经结束,最后一个小错误修复版本为3.2.10。由于Django 3.2是一个长期支持版本,因此在2024年4月之前,开发者都还是会收到安全性和资料丢失修补程序,另外,Django 3.1的扩展支持则正式结束,最终安全版本为3.1.14,官方鼓励所有Django 3.1用户都能升级到Django 3.2或是更高版本。