2023年4月,Django 4.2正式发布,此版本已被指定为长期支持 (LTS) 版本,发布3年后都会收到安全更新,将成为未来3年的主流版本。今天就来一起看看新版本有哪些变化吧?
Python 兼容性
Django 4.2 支持 Python 3.8、3.9、3.10 和 3.11。我们强烈推荐 并且只正式支持每个系列的最新版本。
Psycopg 3 支持
Django 现在支持psycopg 3.1.8 或更高版本。要更新您的代码,请安装psycopg 库,您无需更改, ENGINE因为django.db.backends.postgresql 它支持这两个库。
对的支持psycopg2可能会在将来的某个时候被弃用和删除。
请注意,psycopg3 在 .x 基础上引入了一些重大变化psycopg2。因此,您可能需要进行一些更改以解决 与 psycopg2 的差异。
对数据库的支持
对 MariaDB 10.3 的上游支持将于 2023 年 5 月结束。Django 4.2 支持 MariaDB 10.4 及更高版本。对 MySQL 5.7 的上游支持将于 2023 年 10 月结束。Django 4.2 支持 MySQL 8 及更高版本。对 PostgreSQL 11 的上游支持将于 2023 年 11 月结束。Django 4.2 支持 PostgreSQL 12 及更高版本。
对列和表的评论
新的Field.db_comment和 Meta.db_table_comment 选项允许分别在列和表上创建注释。例如:
from django.db import models
class Question(models.Model):
text = models.TextField(db_comment="Poll question")
pub_date = models.DateTimeField(
db_comment="Date and time when the question was published",
)
class Meta:
db_table_comment = "Poll questions"
class Answer(models.Model):
question = models.ForeignKey(
Question,
on_delete=models.CASCADE,
db_comment="Reference to a question",
)
answer = models.TextField(db_comment="Question answer")
class Meta:
db_table_comment = "Question answers"
BREACH 攻击的缓解措施
GZipMiddleware现在包括对 BREACH 攻击的缓解。它会将最多 100 个随机字节添加到 gzip 响应中,使 BREACH 攻击更加困难
内存文件存储
新django.core.files.storage.InMemoryStorage类提供了一种非持久性存储,可通过避免磁盘访问来加快测试速度。
自定义文件存储
新STORAGES设置允许配置多个自定义文件存储后端。它还控制用于管理 文件("default"密钥)和静态文件("staticfiles"密钥)的存储引擎。
从此版本开始,旧的DEFAULT_FILE_STORAGE和设置已弃用。STATICFILES_STORAGE
其它变化好像没有什么特别值得期待的,django粉丝们加油!
大江狗,2023年4月