返回文章列表文章索引阅读全文
STARBLOG / 阅读手记
Django

Django过时了吗?从ASGI到AI时代的思考

Django过时?技术趋势变了而已,异步支持短板在AI时代更明显。生态工程化再稳,也挡不住轻量框架和ASGI的冲击。独立开发者该考虑新选择了?

曦远 (DealiAxy)约 4 分钟
目录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中「强行」使用MVVM设计模式

扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写。 MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 从名字上看,MVVM比MVC架构中多了一个ViewModel,没错,就是这个ViewModel,他是MVVM相对于MVC改进的核心思想。在开发过程中,由于需求的变更或添加,项目的复杂度越来越高,代码量

2021-12-18 · Django · 约 1 分钟

Django的信号机制入门

概念 django自带一套信号机制来帮助我们在框架的不同位置之间传递信息。也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)发送给一组接受者(receivers)。 (感觉就很像Qt的信号与槽机制) 信号系统包含以下三要素: 发送者-信号的发出方 信号-信号本身 接收者-信号的接受者 Django内置了一整套信号,下面是一些比较常用的: 在

2022-08-26 · Django · 约 1 分钟

Django统一包装接口返回数据格式

前言 最近实在太忙了,开始了一个新的项目,为了快速形成产品,我选择了Django来实现后端,然后又拿起了之前我封装了项目脚手架「DjangoStarter」。 由于前段时间我写了不少.NetCore的后端代码,对CRUD的接口开发又有了一些新的理解,所以肯定也要把DjangoStarter改造一番,改得更加顺手~ 题外话:话说我在前端终于真正用上react,不得不说 ts + react 真好用,

2022-08-26 · Django · 约 1 分钟

讨论

共 0 条

良言一句三冬暖,恶语伤人六月寒。

加载评论中…