Hacker News 中文摘要

RSS订阅

Django 6 -- Django 6

文章摘要

Django 6.0发布,支持Python 3.12-3.14,不再兼容3.10-3.11。该版本包含新功能、不兼容变更及部分特性弃用,建议用户参考升级指南进行更新。第三方库对旧版Django的支持可能受限。

文章总结

Django 6.0 发布说明

发布日期:2025年12月3日

主要更新内容

  1. Python兼容性
    Django 6.0支持Python 3.12、3.13和3.14,建议使用各系列的最新版本。Django 5.2.x是最后一个支持Python 3.10和3.11的版本。

  2. 第三方库支持
    建议第三方应用开发者放弃对Django 5.2之前版本的支持,并确保应用兼容Django 6.0。

  3. 新功能

    • 内容安全策略(CSP)支持:新增内置工具,帮助防范内容注入攻击(如XSS),通过中间件、上下文处理器和配置设置实现。
    • 模板片段(Template Partials):新增{% partialdef %}{% partial %}标签,支持模块化模板设计。
    • 后台任务框架:提供任务定义、队列管理和结果处理功能,需依赖外部工作进程执行任务。
    • 现代Python邮件API:改用Python 3.6引入的email.message.EmailMessage类,提升Unicode支持和代码简洁性。
  4. 次要功能更新

    • 管理界面使用Font Awesome 6.7.2图标。
    • 密码哈希迭代次数从100万增至120万。
    • GIS功能新增几何维度检查、旋转函数等。
    • 全文搜索支持Lexeme表达式,增强搜索灵活性。
    • 分页器新增异步实现AsyncPaginatorAsyncPage
  5. 不兼容变更

    • 数据库后端API调整,如重命名方法、移除CASCADE级联删除。
    • 停止支持MariaDB 10.5,最低要求为10.6。
    • 最低Python版本要求提升至3.12。
    • DEFAULT_AUTO_FIELD默认改为BigAutoField
    • 自定义ORM表达式需返回元组形式的参数。
  6. 废弃功能

    • 邮件API中部分位置参数改为必须关键字参数。
    • 弃用PostgreSQL特定的StringAggOrderableAggMixin
    • urlizeurlizetrunc默认协议将从HTTP改为HTTPS(Django 7.0生效)。
  7. 移除功能

    • 移除对cx_Oracle的支持。
    • 移除旧版邮件API相关类和函数(如SafeMIMEText)。
    • 清理已弃用的模型方法、表单渲染器等。

升级建议

  • 检查Python和数据库版本兼容性。
  • 更新第三方依赖至支持Python 3.12的版本。
  • 处理系统警告(如DEFAULT_AUTO_FIELD设置)。
  • 参考官方迁移指南调整自定义代码。

详细内容可查阅Django 6.0文档

评论总结

评论内容总结:

  1. 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开发领域。)
  2. 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."(但我希望它在异步支持上能更好。)
  3. 与其他技术的对比和集成问题

    • 用户讨论了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我花了一周……)
  4. 对Django未来发展的建议

    • 用户希望Django能进一步改进异步支持和内置任务后端。
    • 引用:
      • "I'd prefer to wait a bit and include everything in the next version."(我宁愿多等一会儿,让下一个版本包含所有功能。)
  5. 非Django技术的讨论

    • 部分用户提到其他技术栈(如SPA、Go、Rust等),但讨论焦点仍集中在Django上。
    • 引用:
      • "Can someone remind me how we ended up in the SPA era and why exactly?"(谁能提醒我为什么我们会进入SPA时代?)

总结:

评论普遍认可Django的易用性和生态系统,但也指出了与现代前端集成和异步支持的不足。部分用户对比了其他技术栈,但Django仍是讨论的核心。