代码 Django 6.0 发布:内置 CSP、模板 partials 与后台 Tasks 框架

2026-10-09 21:04:02

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
复制全文 生成海报 Django Python Web 框架 版本发布

推荐文章

程序员茄子在线接单