Django 6.0 发布:内置 CSP、模板 partials 与后台 Tasks 框架
Django 6.0 于 2025-12-03 发布,支持 Python 3.12、3.13、3.14。完整说明见 Django 6.0 release notes。
内置 Content Security Policy
CSP 从第三方包变成了框架自带能力:申报可信内容源,缓解 XSS 一类的内容注入。响应头由 django.middleware.csp.ContentSecurityPolicyMiddleware 添加;模板 nonce 由 django.template.context_processors.csp 上下文处理器提供;策略本身通过 SECURE_CSP 与 SECURE_CSP_REPORT_ONLY 两个设置项配置,后者用于只上报、不拦截的观察阶段。
模板 partials
Django 模板语言支持 partials:用 {% partialdef %} 定义命名片段,用 {% partial %} 渲染它。片段可以留在同一个模板文件里复用,不必为每一块单独建 include 文件。
内置 Tasks 框架
新增内置 Tasks 框架,把代码放到 HTTP 请求-响应周期之外运行,例如发邮件、处理数据,交给后台 worker。
邮件改用现代 email API
django.core.mail 转向以 email.message.EmailMessage 为中心的现代 API,取代旧的 legacy(Compat32)实现。旧 API 依赖 email.mime 下的低层 MIME 类,消息结构与编码都要手动处理。
异步分页
新增 AsyncPaginator 与 AsyncPage,分别是 Paginator、Page 的异步实现。
其他改动
- 多个 Postgres extension 操作支持可选
hints参数,用于向数据库路由提供路由决策提示:CreateExtension、BloomExtension、BtreeGinExtension、BtreeGistExtension、CITextExtension、CryptoExtension、HStoreExtension、TrigramExtension、UnaccentExtension。 ManifestStaticFilesStorage保证 manifest 路径一致、可重现。- 模板中可使用
forloop.length变量。 - ASGI 下 HTTP/2 请求支持多个 Cookie 头。
DiscoverRunner支持在 forkserver 多进程启动方式下并行测试。QuerySet.raw支持带GeneratedField的模型。JSONField在 SQLite 上支持负数组索引。- 新增
AnyValue聚合:从非空输入中返回任意一个值,支持 SQLite、MySQL、Oracle、PostgreSQL 16+。 GeneratedField与字段赋值表达式在支持RETURNING的后端(SQLite、PostgreSQL、Oracle)save 后从数据库刷新;不支持的后端(MySQL、MariaDB)标记为 deferred,后续访问时再触发刷新。
不兼容变更
- 移除 MariaDB 10.5 支持(上游 2025-06 结束维护),Django 6.0 支持 MariaDB 10.6+。
- 移除 Python