Django 5.1发行说明-正在开发中

Expected August 2024

欢迎来到Django 5.1!

这些发行说明涵盖 new features ,以及一些 backwards incompatible changes 在从Django 5.0或更早版本升级时,您需要注意这一点。我们已经 begun the deprecation process for some features

请参阅 如何将Django升级到更新版本 如果您要更新现有项目,请提供指南。

与Python的兼容性

Django 5.1支持Python3.10、3.11和3.12。我们 highly recommend 并且仅官方支持每个系列的最新版本。

Django 5.1中的新特性

次要特征

django.contrib.admin

  • ..。

django.contrib.admindocs

  • ..。

django.contrib.auth

  • PBKDF2密码散列器的默认迭代计数从720,000增加到870,000。

django.contrib.contenttypes

  • ..。

django.contrib.gis

  • ..。

django.contrib.messages

  • ..。

django.contrib.postgres

  • ..。

django.contrib.redirects

  • ..。

django.contrib.sessions

  • ..。

django.contrib.sitemaps

  • ..。

django.contrib.sites

  • ..。

django.contrib.staticfiles

  • ..。

django.contrib.syndication

  • ..。

异步视图

  • ..。

高速缓存

  • ..。

CSRF

  • ..。

装饰者

  • ..。

电子邮件

  • ..。

错误报告

  • ..。

文件存储

  • ..。

文件上载

  • ..。

表格

  • 为了提高可访问性并使屏幕阅读器能够将字段集与其帮助文本相关联,表单字段集现在包括 aria-describedby Html属性。

通用视图

  • ..。

国际化

  • ..。

日志记录

  • ..。

管理命令

  • ..。

迁徙

  • ..。

模型

  • QuerySet.explain() 现在支持 generic_plan PostgreSQL 16+上的选项。

  • RowRange 现在接受正整数作为 start 参数和负整数 end 争论。

  • 新的 exclusion 的论点 RowRangeValueRange 允许从窗口框架中排除行、组和系带。

  • QuerySet.order_by() 现在支持按批注转换排序,例如 JSONObject 钥匙和 ArrayAgg 指数。

请求和响应

  • ..。

安防

  • ..。

序列化

  • ..。

信号

  • ..。

模板

  • 自定义标记现在可以在 Parser 对象,该对象稍后将在 Template 举个例子。这样的数据可以由例如模板加载器或其他模板客户端使用。

  • 新的 {% query_string %} 模板标记允许更改 QueryDict 实例在链接中使用,以生成指向下一页的链接,同时保持任何筛选选项不变。

测试

  • assertContains()assertNotContains() ,以及 assertInHTML() 断言现在为断言错误消息添加了堆积如山的内容。

  • Django测试运行程序现在支持 --screenshots 可选择保存屏幕截图以进行Selify测试。

  • 这个 RequestFactoryAsyncRequestFactoryClient ,以及 AsyncClient 类现在支持 query_params 参数,该参数接受查询字符串键和值的字典。这样可以更轻松地在任何HTTP方法上设置查询字符串。

    self.client.post("/items/1", query_params={"action": "delete"})
    await self.async_client.post("/items/1", query_params={"action": "delete"})
    

URLs

  • ..。

公用事业

  • ..。

验证器

  • ..。

5.1中向后不兼容的更改

数据库后端API

本节介绍第三方数据库后端可能需要的更改。

  • ..。

django.contrib.gis

  • 删除了对PostGIS 2.5的支持。

不再支持MariaDB 10.4

对MariaDB 10.4的上游支持将于2024年6月结束。Django 5.1支持MariaDB 10.5及更高版本。

不再支持PostgreSQL 12

对PostgreSQL 12的上游支持将于2024年11月结束。Django 5.1支持PostgreSQL 13及更高版本。

杂类

  • 为了提高可访问性,管理员的更改列表筛选器现在呈现在 <nav> 标记而不是 <div>

  • SimpleTestCase.assertURLEqual()assertInHTML() 现在添加 ": " 发送到 msg_prefix 。这与其他断言的行为是一致的。

5.1中弃用的功能

杂类

  • 这个 ModelAdmin.log_deletion()LogEntryManager.log_action() 方法已弃用。子类应该实现 ModelAdmin.log_deletions()LogEntryManager.log_actions() 取而代之的是。

  • 未登记的人 django.utils.itercompat.is_iterable() 函数和 django.utils.itercompat 模块已弃用。使用 isinstance(..., collections.abc.Iterable) 取而代之的是。

  • 这个 django.contrib.gis.geoip2.GeoIP2.coords() 方法已弃用。使用 django.contrib.gis.geoip2.GeoIP2.lon_lat() 取而代之的是。

  • 这个 django.contrib.gis.geoip2.GeoIP2.open() 方法已弃用。使用 GeoIP2 而是使用构造函数。

5.1中删除的功能

这些功能已经到了弃用周期的末尾,并在Django 5.1中被删除。

看见 4.2中弃用的功能 有关这些更改的详细信息,包括如何删除这些功能的使用。

  • 这个 BaseUserManager.make_random_password() 方法被移除。

  • 模特的 Meta.index_together 选项已删除。

  • 这个 length_is 模板筛选器已删除。

  • 这个 django.contrib.auth.hashers.SHA1PasswordHasherdjango.contrib.auth.hashers.UnsaltedSHA1PasswordHasher ,以及 django.contrib.auth.hashers.UnsaltedMD5PasswordHasher 都被移除了。

  • 模型 django.contrib.postgres.fields.CICharFielddjango.contrib.postgres.fields.CIEmailField ,以及 django.contrib.postgres.fields.CITextField 被删除,但在历史迁移中的支持除外。

  • 这个 django.contrib.postgres.fields.CIText 将删除Mixin。

  • 这个 map_widthmap_height 的属性 BaseGeometryWidget 都被移除了。

  • 这个 SimpleTestCase.assertFormsetError() 方法被移除。

  • 这个 TransactionTestCase.assertQuerysetEqual() 方法被移除。

  • 支持将编码的JSON字符串文字传递给 JSONField 并且相关联的查找和表达式被移除。

  • 支持将位置参数传递给 SignerTimestampSigner 被移除。

  • 这个 DEFAULT_FILE_STORAGESTATICFILES_STORAGE 设置已删除。

  • 这个 django.core.files.storage.get_storage_class() 函数被删除。