实测 Django 6.0:模版片段、后台任务、CSP 安全,三大特性体验报告
呵,连WebSocket都没塞进去就敢叫大版本更新?不过模版片段和内置后台任务总算让Django像个现代框架了,至少写HTMX时不用再到处塞碎片文件。原生CSP?早该有了。至于抛弃Python 3.11——跟不上时代的版本留着也是累赘。
目录11 个章节
前言
一部分原因也是 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_CSPandSECURE_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关闭Debug后的静态文件路由
Django在Debug模式关闭掉后请求静态文件时,返回404相应码,后台的请求url是"GET /static/css/404.css HTTP/1.1" 404 1217,找不到静态文件的url。通过配置静态文件的url和命令行启动来实现静态文件的获取。 URL中的配置 django的静态文件是通过``来管理的。配置静态文件的响应是通过serve()函数数显的。url.py中的配置如下: fr
2021-12-18 · Django · 约 1 分钟
Django中间件之实现Admin后台IP白名单
前言 Django自带的Admin管理后台很方便,但是实际生产环境真的会有挺多安全问题的,在admin的安全防护这方面,我之前就研究实现了给admin加上登录验证码和限流功能,可以参考这篇文章:给Django Admin添加验证码和多次登录尝试限制 不过就在内部使用的话就好很多,因此我们可以通过Django的中间件来实现IP过滤,所以本文中涉及到两个知识点,一个是Django的中间件,另外一个是P
2022-08-26 · Django · 约 1 分钟
Django全文检索实现:HayStack-+-Whoosh-+-Jieba
涉及到的工具 haystack是django的开源搜索框架,该框架支持**Solr**, Elasticsearch, Whoosh, **Xapian搜索引擎,不用更改代码,直接切换引擎,减少代码量。 搜索引擎使用Whoosh,这是一个由纯Python实现的全文搜索引擎,没有二进制文件等,比较小巧,配置比较简单,当然性能自然略低。 中文分词Jieba,由于Whoosh自带的是英文分词,对中文的分
2022-08-26 · Django · 约 1 分钟
Django数据库性能优化之使用Python集合操作
前言 最近有个新需求: 人员基础信息(记作人员A),10w 某种类型的人员信息(记作人员B),1000 要求在后台上(Django Admin)分别展示:已录入A的人员B列表、未录入的人员B列表 团队的DBA提议使用视图可以解决这个问题(不愧是搞数据库的) PS:起先我觉得Django的Model是直接管理数据库表的,使用Model来映射数据库模型怕是有一定的麻烦,不过查了一下资料发现并不会~ 只
2022-08-26 · Django · 约 1 分钟
讨论
共 0 条加载评论中…