Django二十年:被骂“老派笨重”的全栈框架,正在成为AI时代的隐形基础设施

上周帮一个做独立开发者的朋友改项目,他上来就骂——”Django这破框架,写个后台还要跟ORM较劲,不如Next.js香”。我翻了两页他的代码笑了。他连models的related_name都没设对,还好意思怪框架。

很多人对Django的印象,还停留在”老派、笨重、适合做小网站后台”的刻板印象里,甚至不少刚入行的开发者,上来就把它划进”过时技术”的分类里。但很少有人注意到,从2005年诞生到现在,这个当初由报社新闻团队为了快速上线内容管理系统做出来的框架,早就成了全球互联网产业里最稳的那批基础设施。

被刻板印象绑架的“大而全”标签


很多人说Django重,本质是没搞懂它的设计初衷。它从第一天起,就不是给”写个Demo三分钟上线”的场景准备的。它的核心设计哲学是“batteries included”(开箱即用)——你不用自己选权限库,不用自己写后台管理,不用自己做CSRF防护,不用自己写ORM的基础查询逻辑,所有做Web应用会用到的通用模块,它都提前给你搭好了,而且是经过十几年全球开发者踩坑打磨过的稳定版本。

Django MTV架构逻辑流程图
Django MTV架构逻辑流程图


很多人吐槽它的MTV架构绕,其实这恰恰是它能长期稳定的核心原因。它把模型、模板、视图的边界划得极其清晰,你写的业务逻辑,只要符合它的分层规范,哪怕过了五六年,后来的人接手也能一眼看懂代码在哪。反观很多轻量框架,大家写代码怎么舒服怎么来,接口逻辑、数据库查询、前端渲染全揉在一个函数里,半年后自己回头看都找不到之前的代码。

当然,Django的技术边界也非常清晰。它不适合什么场景?如果你要做一个交互极其复杂的单页应用,需要频繁跟前端做无刷新的数据交互,它自带的模板引擎就会显得非常僵硬,不如React、Vue这类纯前端方案灵活;如果你要做每秒上万请求的实时推送服务,它原生的同步请求处理模型,性能上确实比不过原生异步的FastAPI或者Go语言写的框架。说实话,太多人拿错了场景用Django,最后骂框架不好用,跟买了电钻去拧螺丝最后怪钻太沉有什么区别。

藏在头部互联网公司背后的“隐形骨架”


很多人不知道,你每天刷的Instagram,从创业第一天的第一行后端代码到现在全球十亿级用户的核心业务,底层都跑在Django上。Pinterest的早期核心系统、NASA面向公众开放的天文数据查询平台、全球不少金融机构的内部风控后台,甚至国内不少政务公开的信息查询系统,核心逻辑层用的都是Django。

头部互联网公司Django技术栈应用占比统计图
头部互联网公司Django技术栈应用占比统计图


为什么这些对稳定性要求极高的团队,放着层出不穷的新潮框架不用,非要选这个“老派”的Django?答案其实很简单:它的长期维护性,没有任何同类型框架能打。

有个做企业服务的团队跟我算过一笔账:他们2016年用Django写的核心客户管理系统,到2024年只需要做三次小版本的依赖升级,就能跑在最新的Python 3.12版本上,整个迁移过程花了不到两个人天。换作其他同年代流行的Web框架?可能早就在一次次的大版本重构中,连官方文档都找不到了,想要升级就得全部重写,那成本是几十万甚至上百万的投入。

更别说它的生态沉淀。从支付对接、多租户权限、文件存储,到现在对接大模型API的工具包,几乎你能想到的Web开发通用需求,都有经过上千个项目验证的成熟第三方包,不用自己从零开始写。很多团队一开始图快,用轻量框架搭了个Demo,真到要上线的时候,发现要自己写权限、自己做安全防护、自己搭后台管理,前前后后花的时间,比一开始就用Django多了不止三倍。

绕不开的时代错位:同步架构的性能瓶颈

绕不开的时代错位:同步架构的性能瓶颈
绕不开的时代错位:同步架构的性能瓶颈

但Django的问题也从来没被掩盖过。它诞生于2005年,核心架构从根上是为同步请求设计的——也就是一个请求过来,处理完了才能接下一个。这在Web应用大多是“用户点一下页面,服务器返回个HTML”的时代,完全够用。但现在的应用场景早就变了:大家要做实时聊天、在线文档协作、高并发的AI接口调用,这些场景天生就需要异步架构的支持。

虽然Django从3.0版本开始就逐步支持异步特性,但直到今天,它最核心的ORM模块,对异步查询的支持都还没达到生产级的稳定程度。很多人兴冲冲地把Django改成异步模式,最后发现ORM的查询还是同步阻塞,性能提升还不到预期的三分之一。

还有个很现实的矛盾:现在的独立开发者群体,大多是刚接触开发一两年的新人,他们对框架的需求是“零配置、快速出活”。Django的一套初始化流程——建项目、配数据库、设中间件、跑迁移、建模型——哪怕是熟手也要花个十几分钟,对新人来说门槛确实不低。我去年帮一个刚毕业的学生改毕设,他上来就要用Django,结果光配数据库的连接权限就卡了两个小时,最后给他换成FastAPI,半小时就把整个后端接口写完了。不是Django不好,是它的适用场景,真的不是所有项目都匹配。

聊到未来3-5年的走向,其实根本不用太悲观。

首先,Django绝对不会被淘汰。它的核心优势——长期稳定、开箱即用、安全防护到位——恰恰是现在AI应用开发最缺的东西。现在很多做AI应用的团队,每天要花大量时间写非核心的功能:比如用户登录、权限校验、后台数据管理、文件存储,这些事Django全帮你干完了,团队只要把精力放在大模型调用、提示词优化这些核心业务上就行。现在Django社区已经出了不少对接LangChain、OpenAI接口的第三方包,很多人没注意到,这个“老派”框架,早就悄悄跟上了AI时代的节奏。

其次,它的异步改造一定会在3-5年内达到生产级稳定。现在Django的核心开发团队,一半的精力都在做ORM的异步适配,等这个功能成熟了,它的性能短板基本就补上了。但它不会变成FastAPI那样的轻量框架,它的定位永远是“给需要长期维护的中大型团队准备的全栈解决方案”,不会为了迎合“快速写Demo”的需求,把那些经过十几年打磨的通用模块砍掉。

至于安全层面,Django的默认防护机制,其实是国内很多小团队最容易忽略的部分。它从ORM层面就做了SQL注入的防护,模板默认开启XSS过滤,CSRF防护是默认开启的,很多用轻量框架写接口的团队,经常因为忘了加这些防护,最后被脱库、被注入,这些年见得太多了。真的,别觉得写代码快就是好,你写得快,被黑得也快。

上周跟那个一开始骂Django的朋友吃饭,他最后把项目里自己写的那个七零八落的后台管理,换成了Django-admin的定制版本,省了整整三天的工作量。他自己都不好意思说,原来之前骂了半天的框架,刚好是最适合他那部分需求的工具。

工具从来没有高低。
只有适不适合。

作者|大讲堂

排版|大讲堂

审核|知知

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:Django二十年:被骂“老派笨重”的全栈框架,正在成为AI时代的隐形基础设施
文章链接:https://www.lfdjt.com/info_23_30547.html