文章摘要
Django 6.0发布,支持Python 3.12-3.14,不再兼容3.10-3.11。该版本包含新功能、不兼容变更及部分特性弃用,建议用户参考升级指南进行更新。第三方库对旧版Django的支持可能受限。
文章总结
Django 6.0 发布说明
发布日期:2025年12月3日
主要更新内容
Python兼容性
Django 6.0支持Python 3.12、3.13和3.14,建议使用各系列的最新版本。Django 5.2.x是最后一个支持Python 3.10和3.11的版本。第三方库支持
建议第三方应用开发者放弃对Django 5.2之前版本的支持,并确保应用兼容Django 6.0。新功能
- 内容安全策略(CSP)支持:新增内置工具,帮助防范内容注入攻击(如XSS),通过中间件、上下文处理器和配置设置实现。
- 模板片段(Template Partials):新增
{% partialdef %}和{% partial %}标签,支持模块化模板设计。 - 后台任务框架:提供任务定义、队列管理和结果处理功能,需依赖外部工作进程执行任务。
- 现代Python邮件API:改用Python 3.6引入的
email.message.EmailMessage类,提升Unicode支持和代码简洁性。
次要功能更新
- 管理界面使用Font Awesome 6.7.2图标。
- 密码哈希迭代次数从100万增至120万。
- GIS功能新增几何维度检查、旋转函数等。
- 全文搜索支持
Lexeme表达式,增强搜索灵活性。 - 分页器新增异步实现
AsyncPaginator和AsyncPage。
不兼容变更
- 数据库后端API调整,如重命名方法、移除
CASCADE级联删除。 - 停止支持MariaDB 10.5,最低要求为10.6。
- 最低Python版本要求提升至3.12。
DEFAULT_AUTO_FIELD默认改为BigAutoField。- 自定义ORM表达式需返回元组形式的参数。
- 数据库后端API调整,如重命名方法、移除
废弃功能
- 邮件API中部分位置参数改为必须关键字参数。
- 弃用PostgreSQL特定的
StringAgg和OrderableAggMixin。 urlize和urlizetrunc默认协议将从HTTP改为HTTPS(Django 7.0生效)。
移除功能
- 移除对
cx_Oracle的支持。 - 移除旧版邮件API相关类和函数(如
SafeMIMEText)。 - 清理已弃用的模型方法、表单渲染器等。
- 移除对
升级建议
- 检查Python和数据库版本兼容性。
- 更新第三方依赖至支持Python 3.12的版本。
- 处理系统警告(如
DEFAULT_AUTO_FIELD设置)。 - 参考官方迁移指南调整自定义代码。
详细内容可查阅Django 6.0文档。
评论总结
评论内容总结:
Django的受欢迎程度和易用性
- 多位用户表达了对Django的喜爱,认为其“开箱即用”的特性使其适用于各种规模的项目。
- 引用:
- "Django's batteries included setup makes it a no brainer for almost any project big or small."(Django的“内置电池”设计让它几乎适用于任何大小的项目。)
- "Thanks to Django. I got into the webdev world so easily."(多亏了Django,我轻松进入了Web开发领域。)
Django的生态系统和扩展性
- 用户提到Django的丰富生态系统(如REST框架、GraphQL支持)和与AI代码生成的兼容性。
- 也有用户认为某些功能(如任务框架)需要进一步完善。
- 引用:
- "You can get a working site with the usual features... with minimal code thanks to the richness of the ecosystem."(得益于丰富的生态系统,你可以用最少的代码实现一个功能齐全的网站。)
- "I wish it was better with async, though."(但我希望它在异步支持上能更好。)
与其他技术的对比和集成问题
- 用户讨论了Django与现代前端框架(如Next.js/Nuxt.js)集成的复杂性。
- 也有用户询问Java中是否有类似Django的框架(如Spring Boot的复杂性)。
- 引用:
- "A lot of times it's either through Nextjs/Nuxtjs + Django as an API or complex bundling process..."(很多时候要么通过Next.js/Nuxt.js + Django作为API,要么是复杂的打包流程……)
- "Getting django + rest_framework up and running... takes me max 10 minutes, trying to do the same with spring boot I am a week in..."(用Django + REST框架启动项目最多10分钟,而用Spring Boot我花了一周……)
对Django未来发展的建议
- 用户希望Django能进一步改进异步支持和内置任务后端。
- 引用:
- "I'd prefer to wait a bit and include everything in the next version."(我宁愿多等一会儿,让下一个版本包含所有功能。)
非Django技术的讨论
- 部分用户提到其他技术栈(如SPA、Go、Rust等),但讨论焦点仍集中在Django上。
- 引用:
- "Can someone remind me how we ended up in the SPA era and why exactly?"(谁能提醒我为什么我们会进入SPA时代?)
总结:
评论普遍认可Django的易用性和生态系统,但也指出了与现代前端集成和异步支持的不足。部分用户对比了其他技术栈,但Django仍是讨论的核心。