2005 年诞生的 Django 到今天已经走过二十年,仍是 Python 世界 Star 数最高的 Web 框架之一(GitHub 约 81k Star)。它最出名的口号是"完美主义者的框架",官方定位一句话:Django 是一个高级 Python Web 框架,鼓励快速开发和干净、务实的设计。本文从项目定位讲起,覆盖 MTV 架构、ORM、Admin 后台,再到部署与选型建议,帮你判断这个常青树是否适合你的下一个项目。
1、项目概述
Django 由 Adrian Holovaty 与 Simon Willison 在 2005 年开源,采用 BSD 协议,仓库地址为 django/django。它诞生的初衷是新闻编辑室的快速开发——记者改完需求几小时内就要上线,这决定了 Django"大而全、约定优于配置"的基因:ORM、模板引擎、路由、表单、认证、Admin 后台、迁移系统全部内置,装好就能用。
核心特性可以概括为:
- 完整的 MTV 架构(Model-Template-View)
- 强大的 ORM,支持 PostgreSQL、MySQL、SQLite、Oracle
- 自动生成的 Admin 管理后台
- 内置认证、权限、会话、缓存、国际化
- 自动化的数据库迁移系统
- 完善的安全防护:CSRF、XSS、SQL 注入、点击劫持
安装使用 pip:
python -m pip install Django
当前版本要求 Python 3.10 以上。Django 的发布节奏稳定,大约每八个月一个大版本,每个版本提供约三年的安全更新支持,这对长期维护的企业项目非常关键。
2、MTV 架构与请求流程
Django 把 Web 应用拆成三层:Model 负责数据层,Template 负责展示,View 负责业务逻辑,对应其它框架常说的 MVC。一个请求进来的完整流程是:URLconf 根据路由规则把请求分发到 View,View 调用 Model 读写数据库,渲染 Template 后返回响应。
新建项目和应用只需两条命令:
django-admin startproject mysite
python manage.py startapp blog
startproject 生成项目骨架(配置、根路由、WSGI 入口),startapp 生成一个业务模块(模型、视图、测试的目录结构)。这种标准化的项目布局让任何 Django 开发者接手陌生项目都能快速定位代码,团队协作成本极低。manage.py 是日常操作的入口,runserver、migrate、createsuperuser、test 全部经由它执行。
3、模型与 ORM
ORM 是 Django 最核心的资产。用 Python 类描述数据表:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
定义好模型后执行 python manage.py makemigrations 生成迁移脚本,再执行 migrate 应用到数据库,表结构变更全程版本化管理。查询语法是纯 Python 链式调用:Article.objects.filter(published_at__year=2026).order_by("-published_at"),双下划线语法可以穿越外键做关联查询,绝大多数场景不用写 SQL。跨表关系的声明(ForeignKey、ManyToManyField)会自动在数据库层面建立约束,配合 select_related 与 prefetch_related 能有效避免 N+1 查询问题。
4、视图模板与Admin后台
视图层支持两种风格:传统的函数视图配合 render 渲染模板,以及面向复用的 ListView、DetailView 等类视图。模板语言刻意做得简单——变量替换、过滤器和标签,如 {{ article.title }} 与 {% for %},设计上防止在模板里写业务逻辑。如果要写纯 API,官方配套的 Django REST Framework 是事实标准,序列化器与认证体系可以和 Django ORM、权限系统无缝衔接。
Admin 后台是 Django 的杀手级功能。注册模型后自动获得一套增删改查界面:
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ("title", "published_at")
search_fields = ("title",)
执行 createsuperuser 创建管理员账号后访问 /admin,一个支持搜索、过滤、分页、批量操作的后台就绪了。对内部管理系统、内容站点来说,这直接省掉数周的前端开发工作量,很多团队选 Django 正是冲着这一点。
5、部署与注意事项
生产部署的推荐组合是 gunicorn 或 uvicorn(配 ASGI)做应用服务器,前置 Nginx 处理静态文件与反向代理,静态文件收集用 collectstatic 统一归档。安全上有几件事必须做:生产环境把 DEBUG 设为 False、配置 ALLOWED_HOSTS、开启 HTTPS 与 SECURE_* 系列设置。
常见注意事项:
- ORM 便利但有边界,复杂报表查询用原生 SQL 更清晰
- 迁移文件要纳入版本控制,多人协作时注意合并冲突
- 默认 SQLite 适合开发,生产换 PostgreSQL
- 缓存框架支持 Redis 与 Memcached,善用页面级缓存
6、总结
Django 用二十年的迭代证明了一件事:约定优于配置的全栈框架在效率和可维护性上依然能打。文档、安全、生态、长期支持面面俱到,是内容型网站、企业内部系统、需要 Admin 后台的项目的不二之选。对于重 API、轻页面的微服务场景,建议用 FastAPI 这类轻量框架;而对于需要 ORM 加后台加认证一站搞定的业务系统,建议直接上 Django 并把 DRF 作为 API 层标准组件。入门路径推荐官方文档的入门教程,跟着写一遍投票应用即可上手。


