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项目笔记:sessions处理以及复杂对象序列化
前言:一点题外话 我发现,不更新博客的时候,不是非常忙,就是效率非常低。最近没怎么更新博客,原因是第二种= =。惭愧惭愧。 今天效率出奇的高,一天时间把PassNote后端的接口全部写完了,Django很好用,不过实际项目中还是有些框架不能实现的功能需要解决的,我比较喜欢造轮子,不过为了保证效率,还是尽量用现成的工具,减少不必要的折腾。 关于PassNote 之前应该在博客有说过,这是一个密码管理
2022-04-02 · Django · 约 1 分钟
给Django-Admin添加验证码和多次登录尝试限制
Django自带的Admin很好用,但是放到生产环境总还差了点什么= = 看看admin的介绍: Django奉行Python的内置电池哲学。它自带了一系列在Web开发中用于解决常见问题或需求的额外的、可选工具。这些工具和插件,例如django.contrib.redirects都必须在settings中的INSTALLED_APPS处进行注册,有的还需要执行manage.py migrate命令
2021-12-18 · Django · 约 1 分钟
聊聊Django应用的部署和性能的那些事儿
前言 随着工作的深入,我越来越发现Python Web开发中有很多坑,也一直在羡慕AspNetCore和Go等的可执行文件部署和高性能,以及Spring生态的丰富,不过因为工作用了Django,生活还是要继续的嘛,这Django好歹也是有很大份额的Web框架,也没那么不堪,至少开发速度上就吊打一众框架了~ 在之前的文章里我介绍过使用Docker部署Django应用的方法,不过那种部署方式只适合上线
2022-05-27 · Django · 约 1 分钟
Django统一包装接口返回数据格式
前言 最近实在太忙了,开始了一个新的项目,为了快速形成产品,我选择了Django来实现后端,然后又拿起了之前我封装了项目脚手架「DjangoStarter」。 由于前段时间我写了不少.NetCore的后端代码,对CRUD的接口开发又有了一些新的理解,所以肯定也要把DjangoStarter改造一番,改得更加顺手~ 题外话:话说我在前端终于真正用上react,不得不说 ts + react 真好用,
2022-08-26 · Django · 约 1 分钟
讨论
共 0 条加载评论中…