Django:跑了20年的Web框架,为什么还没被淘汰?

上周帮南京本地一个做政务小程序的团队排障,翻了3000行代码,最后卡壳的点居然是Django自带的Admin接口权限配置漏了个字段。

说出来有点好笑。

2025年了,还有团队把Django当快速原型工具用,连它最核心的设计逻辑都没摸透。

从新闻编辑室里长出来的“反潮流”基因

2005年,劳伦斯日报的两个程序员实在受够了当时Web开发的繁琐——写个发稿系统要从零搭数据库交互、写权限校验、做后台管理界面,等系统搭完,新闻的热度都过了。Django从诞生第一天起,就带着新闻行业的基因:要快,要稳,要能快速把内容推到用户面前。

它从一开始就走了和其他框架完全相反的路线:别人是给开发者一个空工具箱,让大家自己拧螺丝搭房子;Django直接把精装一居室的钥匙塞你手里——ORM、路由系统、自动生成的Admin后台、表单验证、全套安全防护,所有常用的功能全部打包,拎包就能住。

Django框架MVT架构分层与核心组件示意图
Django框架MVT架构分层与核心组件示意图

核心的MVT设计说穿了很简单:模型层管数据库读写,模板层管页面渲染,视图层管业务逻辑,把传统MVC里最容易重复写的控制器逻辑,拆成了统一的路由和中间件系统。你只要定义一个简单的用户模型,跑两条迁移命令,就能直接生成带增删改查、权限控制、操作日志的后台页面——这套逻辑在2005年完全是降维打击。

第一次用Django的人往往会吐槽它“管得太宽”,写个简单的接口都要遵守它的配置规则,没有Flask那种“想怎么写就怎么写”的自由。但真等你要上线一个正经的生产系统,才会发现那些一开始觉得麻烦的规则,全是十几年里踩过的坑换回来的默认值——自动防SQL注入,自动做CSRF校验,自动给敏感接口加访问频率限制,这些东西你自己写,轻则漏个漏洞,重则花几个月的时间补全。

卡在技术范式交替的缝隙里

这几年Web开发的风向变了。前后端分离成了标配,异步接口、实时交互、流式返回成了很多业务的刚需,Django的短板开始慢慢显现。

最早的版本,整个框架是完全同步的,遇到需要高并发的场景,就得靠多进程部署硬扛,资源消耗比异步框架高不少。很多做C端产品的团队,慢慢把面向用户的接口从Django迁到了FastAPI、Node.js的服务上,只把核心的后台管理留在Django里。

去年在南京的技术沙龙上碰到个做跨境独立站的CTO,他们2019年全站跑在Django上,现在新的商品详情接口、订单查询接口全换成了FastAPI,问他为啥换,他说“不是Django不好,是要做个每秒几千请求的流式商品推荐,还要接大模型的对话接口,用Django的同步ORM调起来总觉得隔了层东西,不够顺”。

Django与FastAPI、Next.js全栈框架适用场景对比图
Django与FastAPI、Next.js全栈框架适用场景对比图

但这几年Django也在追着改,3.0版本之后逐步支持异步视图,ORM也开始兼容异步查询,第三方生态里的DRF(Django REST Framework)更是成了很多团队写后端接口的首选,甚至不少人用Django接向量数据库搭RAG应用——毕竟ORM对接数据库的逻辑是现成的,Admin后台直接就能做知识库的文档管理、权限分配,比从零写个后台系统省了至少一半的工作量。

被忽略的基本盘,从来不是技术潮流

很多人评判一个框架的价值,总爱拿“新不新”“快不快”当标准,却忽略了Django从一开始就瞄准的场景:那些对稳定性、安全性、可维护性要求远高于极致性能的系统。

你去数全球跑在Django上的系统:Instagram的核心用户关系模块,NASA的部分公开服务站点,全球数百家主流媒体的内容管理后台,国内从部委到区县的不少政务服务系统,甚至连很多高校的教务管理系统,都是用Django搭的。

为啥这些团队选Django?不是因为它技术最先进,是因为它的安全默认值足够靠谱,版本兼容性足够好——很多系统从Django1.x的版本,升级到现在的4.x,核心代码几乎不用大改,光是这一点,就比很多每年换个技术栈的系统省了几千万的维护成本。

落地的障碍其实也很明显:现在刚入行的年轻开发者,接触的都是React、Node.js这类当下热门的技术,很多人觉得Django是“老古董”,连它的核心配置都没摸透,就把自带的ORM换了,把Admin后台关了,最后写出来的系统,既没有轻量框架的灵活性,又丢了Django的核心优势,纯属本末倒置。

藏在开源生态里的隐性风险

很多人只看到Django的好用,没看到它背后的维护压力。现在Django的核心开发团队,大部分是志愿者,靠Django软件基金会的少量捐赠支撑,最近几年核心贡献者的数量其实在缓慢下降,不少以前的核心开发者都转去做大模型、云原生相关的项目了。

更麻烦的是生态的隐性依赖。很多团队用Django的时候,会装十几个第三方插件,比如做跨域的,做权限的,做缓存的,这些插件的维护者也是独立开发者,哪天项目停更了,你要么自己花时间改代码适配新版本,要么就得带着安全漏洞一直用。之前就出过好几次公开的安全事件,根源就是某个第三方插件很久没更新,被人扫到了SQL注入的漏洞,直接把整个后台的数据库拖走了。

还有治理的问题。很多团队部署Django的时候图方便,把Admin接口的默认路径直接暴露在公网上,连二次验证都没开,之前国内某地方政务网站就出过类似的事,被人扫到了Admin的登录页,用弱密码登进去,把整个系统的用户信息都导出来了。这些问题不是Django本身的锅,是用的人没把它的安全配置当回事。

再过三五年,Django不会变成技术圈的顶流。

它会慢慢从“全栈Web开发的通用选择”,退回到它最擅长的场景里:内部管理系统、政务服务系统、媒体内容平台、大模型应用的后台管理模块。那些追求极致高并发、极致交互体验的C端产品,会继续用更轻量、更灵活的框架,不会回头。

但它也不会消失。毕竟当一个团队要花几个月时间,从零写一套带权限、带审计、带安全防护的后台系统时,打开Django的文档,跑几行命令就能生成全套功能的爽感,是任何花里胡哨的新框架都给不了的。

上周排障结束,那个写政务系统的小伙子问我,现在学Django还有前途吗?

我给他指了指墙上贴的等保三级验收报告。

你见过哪个做政务的项目,敢把核心后台跑在一个连权限体系都要自己从头写的框架上?

Django从来不是追着潮流跑的选手。

但它永远是那些不想踩坑的团队,最稳的兜底选项。

作者|大讲堂

排版|大讲堂

审核|小准

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:Django:跑了20年的Web框架,为什么还没被淘汰?
文章链接:https://m.lfdjt.com/info_23_28334.html