Django 6.0发布说明-开发中

Expected December 2025

欢迎来到Django 6.0!

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

如何将Django升级到更新版本 如果正在更新现有项目,则提供指南。

python兼容性

Django 6.0支持Python 3.12和3.13。我们 highly recommend 并且仅正式支持每个系列的最新版本。

Django 5.2.x系列是最后一个支持Python 3.10和3.11的系列。

第三方库支持旧版本的Django

Django 6.0发布后,我们建议第三方应用程序作者放弃对Django 5.2之前所有版本的支持。那时,您应该能够使用运行包的测试 python -Wd 以便出现弃用警告。修复弃用警告后,您的应用程序应该与Django 6.0兼容。

Django 6.0中有什么新功能

次要特征

django.contrib.admin

  • Font Awesome Free图标集(版本6.7.2)现在用于管理界面图标。

django.contrib.admindocs

django.contrib.auth

  • PBKDF 2密码哈希器的默认迭代计数从1,000,000增加到1,200,000。

django.contrib.contenttypes

  • ..。

django.contrib.gis

  • GEOSGeometry.hasm 属性检查几何图形是否具有M维度。

  • Rotate 数据库函数将几何图形绕原点或指定点旋转指定角度。

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

  • ..。

装饰者

  • ..。

电子邮件

  • ..。

错误报告

  • ..。

文件存储

  • ..。

文件上传

  • ..。

形式

  • ..。

通用视图

  • ..。

国际化

  • ..。

登录

  • ..。

管理命令

  • startprojectstartapp 如果自定义目标目录不存在,命令现在会创建该目录。

迁徙

  • 现在,被挤压的迁移本身可以在过渡到正常迁移之前被挤压。

  • 迁移现在支持序列化 zoneinfo.ZoneInfo 实例.

  • 可解构对象的序列化现在支持名称不是有效Python标识符的关键字参数。

模型

分页

请求和响应

  • ..。

安防

  • ..。

串行化

  • ..。

信号

  • ..。

模板

  • 新变量 forloop.length 现在可以在一个 for 循环.

  • querystring 模板标签现在一致地在返回的查询字符串前加上 ? ,确保可靠的链接生成行为。

  • querystring 模板标签现在接受多个位置参数,这些参数必须是映射,例如 QueryDictdict .

测验

  • ..。

URLs

  • ..。

公用事业

  • ..。

验证器

  • ..。

6.0中向后不兼容的更改

数据库后端API

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

  • BaseDatabaseCreation.create_test_db(serialize) 已经过时了使用 serialize_db_to_string() 而不是.

  • BaseDatabaseSchemaEditor 和PostgreSQL后台不再使用 CASCADE 当掉落专栏时。

支持MariaDB 10.5

MariaDB 10.5的上游支持将于2025年6月结束。Django 6.0支持MariaDB 10.6及更高版本。

放弃对Python < 3.12的支持

由于Python 3.12现在是Django支持的最低版本,因此任何可选的依赖项也必须满足该要求。每个库的以下版本是第一个添加或确认与Python 3.12兼容性的版本:

  • aiosmtpd 1.4.5

  • argon2-cffi 23.1.0

  • bcrypt 4.1.1

  • geoip2 4.8.0

  • Pillow 10.1.0

  • mysqlclient 2.2.1

  • numpy 1.26.0

  • PyYAML 6.0.2

  • psycopg 3.1.12

  • psycopg2 2.9.9

  • redis-py 5.1.0

  • selenium 4.23.0

  • sqlparse 0.5.0

  • tblib 3.0.0

其他

  • JSON 序列化程序现在在输出的末尾写入一个换行符,即使没有 indent 选项集。

  • 无证 django.utils.http.parse_header_parameters() 函数已被重构以使用Python的 email.message.Message 用于解析。超过10000个字符的输入标题现在将出现 ValueError .

6.0中弃用的功能

其他

  • BaseDatabaseCreation.create_test_db(serialize) 已经过时了使用 serialize_db_to_string() 而不是.

  • 的PostgreSQL StringAgg 类已被弃用,转而支持普遍可用的 StringAgg

  • 的PostgreSQL OrderableAggMixin 被反对支持 order_by 属性现已在 Aggregate

  • 中的默认协议 urlizeurlizetrunc 在Django 7.0中将从HTTP更改为HTTPS。设置过渡设置 URLIZE_ASSUME_HTTPSTrue 在Django 6.x发布周期期间选择采用HTTPS。

  • URLIZE_ASSUME_HTTPS 不建议使用过渡设置。

  • 设置 ADMINSMANAGERS 不建议添加到(名称、地址)二元组列表。改为设置为电子邮件地址字符串列表。Django从未使用过姓名部分。要包含名称,请将地址字符串格式为 '"Name" <address>' 或使用Python的 email.utils.formataddr() .

  • 支持 orphans 参数大于或等于 per_page 论点 django.core.paginator.Paginatordjango.core.paginator.AsyncPaginator 已经过时了

6.0中删除的功能

这些功能已达到弃用周期的末尾,并在Django 6.0中删除。

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

  • 支持将立场论点传递给 BaseConstraint 被移除。

  • DjangoDivFormRendererJinja2DivFormRenderer 过渡形式渲染器被删除。

  • BaseDatabaseOperations.field_cast_sql() 被移除。

  • request 需要签署 ModelAdmin.lookup_allowed() 亚类。

  • 支持呼叫 format_html() 不经过args或kwargs被删除。

  • 的默认方案 forms.URLField"http""https" .

  • FORMS_URLFIELD_ASSUME_HTTPS 过渡设置被删除。

  • django.db.models.sql.datastructures.Join 不再退回到 get_joining_columns() .

  • get_joining_columns() 方法 ForeignObjectForeignObjectRel 被移除。

  • ForeignObject.get_reverse_joining_columns() 方法被删除。

  • 支持 cx_Oracle 被移除。

  • ChoicesMeta 别名来 django.db.models.enums.ChoicesType 被移除。

  • Prefetch.get_current_queryset() 方法被删除。

  • get_prefetch_queryset() 删除了相关管理器和描述符的方法。

  • get_prefetcher()prefetch_related_objects() 不再退回到 get_prefetch_queryset() .

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

  • django.urls.register_converter() 不再允许覆盖现有转换器。

  • ModelAdmin.log_deletion()LogEntryManager.log_action() 方法被删除。

  • 无证 django.utils.itercompat.is_iterable() 功能和 django.utils.itercompat 模块已删除。

  • django.contrib.gis.geoip2.GeoIP2.coords() 方法被删除。

  • django.contrib.gis.geoip2.GeoIP2.open() 方法被删除。

  • 支持将立场论点传递给 Model.save()Model.asave() 被移除。

  • 二传手 django.contrib.gis.gdal.OGRGeometry.coord_dim 被移除。

  • check 关键字参数 CheckConstraint 被移除。

  • get_cache_name() 方法 FieldCacheMixin 被移除。

  • OS_OPEN_FLAGS 属性 FileSystemStorage 被移除。