Django过时了吗?从ASGI到AI时代的思考
Django过时?技术趋势变了而已,异步支持短板在AI时代更明显。生态工程化再稳,也挡不住轻量框架和ASGI的冲击。独立开发者该考虑新选择了?
目录5 个章节
前言
本文本来只是 DjangoStarter v3.2.1 新版本发布博客里的一段思考,不过越写越长,干脆拆分成一篇独立的文章得了。😄
“Django 过时了吗?”
这是一个几乎每天都能在论坛、Reddit 或知乎上看到的问题。
但仔细想想,这个问题的背后并不是“Django 变烂了”,而是技术趋势发生了变化。
异步痛点
总结下来,Django最大的问题不在于性能,应该是对异步支持不佳,这点在 AI 时代更加凸显,WSGI 似乎真有点 out 了,大模型流式输出需要 SSE,实时协作/对话需要 WebSocket,这一点上,Django 确实吃亏。
Django 可以用 python 生态的 daphne 之类的 ASGI 服务器,不过 Django ORM 到了2025年还不支持异步,导致开发起来非常痛苦。
虽然 Django 可以用 Channels + Daphne 搞定异步通信,但整个开发体验并不丝滑。这个我之前踩过坑,可以参考: 使用Django-Channels实现websocket通信+大模型对话
生态与工程化
但这并不意味着 Django 已经过时。相反,Django 的价值依然不可替代:
- 成熟的生态:几乎任何功能都有轮子(认证、后台、权限、支付…)。
- 完善的工程实践:从项目结构到配置、从安全到 ORM,Django 已经帮你想好。
- 长期验证:Instagram、YouTube 等大厂依然在用,说明它足够可靠。
Django 也在多年的发展中积累了庞大的生态,还有良好的工程实践积累。
有个说法是,“任何 python web 项目,最终都会变成 django 的样子”
这句话一点不夸张——当项目规模上来,你会发现 Django 那套东西其实最稳。
这也足以说明 Django 在开发大型项目方面的优势,而且还有 Instagram, YouTube 这类产品的背书
AI 时代的新挑战
不过,如果从 独立开发者 或 AI 原生应用 的角度看,Django 的短板就被放大了:
- 实时性:大模型交互天然依赖 SSE/WebSocket,Django 做得到,但不是天然的。
- 轻量化:像 Next.js、FastAPI 这种框架,更契合“全栈一体化 + 异步优先”的思路。
- 试错成本:Django 启动一个完整项目,成本较高,不如轻量框架灵活。
所以对我来说,虽然 DjangoStarter 还会继续维护,但我未来的新产品,未必会优先选择 Django。
结论
Django 并没有过时,它依然是一个极其稳健的选择。
- 如果你是企业团队,做的是一个中大型、长期维护的项目:Django 依旧是第一梯队框架;
- 如果你是独立开发者,目标是快速试错、探索 AI 原生应用:可能需要考虑 LiteStar、Next.js 等替代方案。
最终选择什么框架,取决于你的项目类型和目标。
对我而言,Django 不再是第一选择,但永远是我工具箱里最可靠的老伙计。
_EOF_
Django过时了吗?从ASGI到AI时代的思考
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
Django+Taro项目实现企业微信登录
前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Taro框架来做多端(目前需要做用于企业微信的H5端和微信小程序) 本文记录一下企业微信登录的流程,上周看文档看得头晕晕的,其实很简单,封装好了就几行代码的事~ 两种方式 一种是先拼接好登录要用的地址authorize_url,回调地址设置成h5应用的网页入口,然后把authori
2022-04-08 · Django · 约 1 分钟
Django项目引入NPM和gulp管理前端资源
前言 之前写了一篇《Asp-Net-Core开发笔记:使用NPM和gulp管理前端静态文件》,现在又来用Django开发项目了,之前我搞了一个Django的快速开发脚手架「DjangoStarter」,正好给升级一下~ 关于npm和gulp我就不多重复了,之前那篇文章都写了,直接上操作 安装依赖 安装依赖的操作跟上一篇文章是一样的,不过我这里直接提供package.json文件,复制到项目根目录里
2022-04-02 · Django · 约 1 分钟
设置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-ninja 中实现类似腾讯阿里云的应用鉴权机制
Django-Ninja API鉴权机制?不就是又一套基于AppClient的认证系统,支持查询参数、请求头、Bearer Token认证,外加IP白名单和scopes权限控制?代码写得够复杂,够绕?
2025-07-10 · Django · 约 1 分钟
讨论
共 0 条加载评论中…