Django 4.0版本的主要变化!你还在用哪个版本?
Django 4.0已经于2021年12月正式发布,标志着Django 4.X时代的来临。作为Django的忠粉们,你们准备新版本里令人激动人心的变化了吧? 去年一年非常忙,请原谅这篇迟到...
Django 4.0已经于2021年12月正式发布,标志着Django 4.X时代的来临。作为Django的忠粉们,你们准备新版本里令人激动人心的变化了吧? 去年一年非常忙,请原谅这篇迟到的文章。
Python兼容性
Django 4.0 将支持 Python 3.8、3.9 与 3.10。Django 3.2.x 会是最后一个支持 Python 3.7及之前版本的系列。
zoneinfo 成为默认的时区库
Python的标准库zoneinfo替代了过去的pytz库,成为Django的默认时区库。Django3.2是个过渡版本,可以使用非pytz的时区库。Django 4.0中,zoneinfo成为默认时区库。Django5.0以后pytz会被移除。
基于这个变化 django.utils.timezone.utc将变为datetime.timezone.utc.
定义模型时可以增加函数类唯一约束
UniqueConstraint() 新增了一个*expressions位置参数,可用于创建唯一性约束。定义模型时可以直接在Meta选项里使用唯一约束,如下所示:
from django.db import models
from django.db.models import UniqueConstraint
from django.db.models.functions import Lower
class MyModel(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
class Meta:
constraints = [
UniqueConstraint(
Lower('first_name'),
Lower('last_name').desc(),
name='first_last_name_unique',
),
]
新增Redis缓存后端
以前Django中使用redis都要安装django_redis,并将第三方库提供的django_redis.cache.RedisCache设置作为缓存后端。新版本内置了django.core.cache.backends.redis.RedisCache缓存后端,为直接使用 Redis 缓存提供了支持,但是需要 redis-py 3.0.0 或更高版本。
其它小变化
新增了比 PBKDF2 算法更安全的scrypt 密码哈希算法;
放弃了对Postgres SQL 9.6及之前版本的支持;
新增QuerySet.contains(obj)方法,用于判定查询集中是否包含给定的对象;
LoginView增加了next_page属性;
{% ifequal %}和 {% ifnotequal %} 标签被删除;
request.is_ajax()方法被删除。
Django版本升级很快,你还在用哪个版本呢? 欢迎留言!
大江狗
推荐阅读
更多推荐
所有评论(0)