曦远 (DealiAxy)一份私人的文字刊物

StarBlog
返回文章列表折页手记阅读全文
Django

实测 Django 6.0:模版片段、后台任务、CSP 安全,三大特性体验报告

呵,连WebSocket都没塞进去就敢叫大版本更新?不过模版片段和内置后台任务总算让Django像个现代框架了,至少写HTMX时不用再到处塞碎片文件。原生CSP?早该有了。至于抛弃Python 3.11——跟不上时代的版本留着也是累赘。

曦远 (DealiAxy)约 5 分钟
目录11 个章节

前言

上一篇文章说了要重新转向 Django

一部分原因也是 Django 6.0 的几个新功能都很不错

很抱歉我没有核实清楚,有一点说错了,Django 6.0 没有内置 WebSocket 支持🤣

尽管如此,Django 6.0 还是带来了许多不错的新功能和改进,经过一天的努力,我已经把 DjangoStarter 框架升级到 Django6.0,也把新功能都用上了。

本文先简单介绍一下这次 Django 大版本更新的功能,后续在 DjangoStarter 下一个版本更新时,我会再详细介绍一下。

Django 6.0

https://docs.djangoproject.com/en/6.0/releases/6.0/

Django 6.0 于 2025 年 12 月发布,带来了一系列现代化的工具和改进。本次更新主要聚焦于开发者体验的提升,特别是针对现代 Web 开发模式(如 HTMX)的支持、安全性的增强以及原生后台任务处理能力。

支持的 Python 版本:3.12, 3.13, 3.14。

核心特性 (Headline Features)

1. 模版片段 (Template Partials)

Django 模版语言现在原生支持模版片段(Template Partials)。这一功能允许开发者在同一个模版文件中定义和重用命名的 HTML 片段,极大地简化了组件化开发,特别是对于使用 HTMX 等库的场景。

  • 主要变化:引入了 {% partialdef %} 和 {% partial %} 标签。
  • 优势:不再需要为了复用一小段 HTML 而创建单独的文件,也不需要依赖第三方包(如 django-template-partials)。

2. 内置后台任务框架 (Built-in Background Tasks)

Django 6.0 引入了一个原生的后台任务框架,允许在 HTTP 请求-响应周期之外运行代码。

  • 功能:可以直接在 Django 中定义和运行后台任务,用于处理发送邮件、数据处理等耗时操作。
  • 意义:减少了对 Celery 等外部重型任务队列的依赖,对于中小型项目或简单任务场景更加友好。

3. 原生内容安全策略 (Native CSP Support)

安全性进一步增强,内置了对内容安全策略(Content Security Policy, CSP)的支持。

  • 配置:通过 SECURE_CSP and SECURE_CSP_REPORT_ONLY 设置项(支持 Python 字典格式)进行配置。
  • 中间件:提供了 ContentSecurityPolicyMiddleware 来自动添加 CSP 头。
  • 灵活性:支持通过 csp() 上下文处理器使用 nonce,并提供了装饰器用于在视图级别覆盖或禁用策略。

其他重要改进 (Other Improvements)

现代化邮件 API

Django 6.0 采用了 Python 的现代邮件 API,更新了内部邮件处理机制,使其更加健壮和符合现代标准。

异步增强

  • 新增 AsyncPaginator 和 AsyncPage 类,进一步完善了异步视图和数据库操作的生态。

数据库与 GIS

  • StringAgg 支持扩展:StringAgg 聚合函数不再仅限于 PostgreSQL,开始支持更多数据库后端。
  • GIS 增强:添加了新的几何函数和查找功能。

升级注意事项

  • Django 6.0 不再支持 Python 3.11 及以下版本。
  • 许多在 Django 5.x 系列中标记为弃用的功能在 6.0 中已被正式移除。升级前请参考官方迁移指南。

_EOF_

实测 Django 6.0:模版片段、后台任务、CSP 安全,三大特性体验报告

本文作者:
程序设计实验室
版权声明:
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

相关文章

Django项目笔记:sessions处理以及复杂对象序列化

前言:一点题外话 我发现,不更新博客的时候,不是非常忙,就是效率非常低。最近没怎么更新博客,原因是第二种= =。惭愧惭愧。 今天效率出奇的高,一天时间把PassNote后端的接口全部写完了,Django很好用,不过实际项目中还是有些框架不能实现的功能需要解决的,我比较喜欢造轮子,不过为了保证效率,还是尽量用现成的工具,减少不必要的折腾。 关于PassNote 之前应该在博客有说过,这是一个密码管理

2022-04-02 · Django · 约 1 分钟

Django探索验证码功能的实现 - DjangoStarter项目模板里的封装

前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是把验证码作为admin后台登录的校验手段,并没有给出前后端分离项目的验证码相关接口。 所以本文介绍验证码功能实现的同时,也对「DjangoStarter」的验证码模块做一层封装,使其更方便使用~ 用哪

2022-04-09 · Django · 约 1 分钟

Django项目引入NPM和gulp管理前端资源

前言 之前写了一篇《Asp-Net-Core开发笔记:使用NPM和gulp管理前端静态文件》,现在又来用Django开发项目了,之前我搞了一个Django的快速开发脚手架「DjangoStarter」,正好给升级一下~ 关于npm和gulp我就不多重复了,之前那篇文章都写了,直接上操作 安装依赖 安装依赖的操作跟上一篇文章是一样的,不过我这里直接提供package.json文件,复制到项目根目录里

2022-04-02 · Django · 约 1 分钟

告别单调,Django后台主页改造

前言 之前我做了个Django的项目,为了让管理后台更加美观,我对Django(应该说是SimpleUI的)默认的Admin后台主页进行改造,具体可以看这篇文章:项目完成 - 基于Django3.x版本 - 开发部署小结 之前的两篇关于Django3.x开发部署小结的文章介绍的都是数据库、接口、性能方面的,看到有朋友留言对后台主页的改造表示有兴趣,所以就写一篇来介绍一下~ 分析 改造基于我定制的

2022-06-28 · Django · 约 1 分钟

讨论

共 0 条

良言一句三冬暖,恶语伤人六月寒。

加载评论中…