1.1 Django 是什么
Django 是 Python 世界最成熟的全功能(full-stack)Web 框架,2005 年开源,口号是 The web framework for perfectionists with deadlines。它主张「自带电池」——把 Web 开发的常见需求(数据库、后台、认证、表单、模板)全部内置,让你专注写业务而非拼装轮子。
- Batteries Included(自带电池)
- 框架内置 ORM、迁移、Admin、认证、表单、缓存、国际化等,无需第三方库即可构建完整应用。这是 Django 与「微框架」最大的区别。
- MTV(Model-Template-View)
- Django 版的 MVC:Model 管数据、Template 管展示、View 管逻辑。框架本身充当 Controller,负责调度请求。
- DRY(Don't Repeat Yourself)
- 不要重复自己。模型定义一次即可派生迁移、表单、Admin、序列化——信息只在一处声明。
- Project(项目)
- 一个 Django 网站的顶层容器,包含配置
settings.py、根路由urls.py与 WSGI/ASGI 入口。 - App(应用)
- 项目内可插拔的功能单元,如 blog、users。一个项目由多个 App 组成,App 可跨项目复用。
- ORM(对象关系映射)
- 用 Python 类描述数据库表,用方法调用代替 SQL。Django ORM 支持 PostgreSQL、MySQL、SQLite、Oracle。
- WSGI / ASGI
- Python Web 服务器网关接口。WSGI 是同步标准(gunicorn/uWSGI),ASGI 是异步标准(uvicorn/daphne),支持 WebSocket。
1.2 Django vs Flask vs FastAPI
| 维度 | Django | Flask | FastAPI |
|---|---|---|---|
| 定位 | 全功能框架 | 微框架 | API 框架 |
| ORM | 内置 | 需 SQLAlchemy | 需 SQLAlchemy/Tortoise |
| Admin 后台 | ✅ 内置 | ❌ | ❌ |
| 认证系统 | ✅ 内置 | 需扩展 | 需自建 |
| 异步 | 部分(ASGI) | 较弱 | ✅ 原生 |
| 适用场景 | 内容站/后台/全栈 | 小服务/自由拼装 | 高性能 API |
| 学习曲线 | 中(约定多) | 低 | 低 |
如何选
• 需要后台管理 + 用户系统 + 数据库的完整网站 → Django
• 小型服务、想自己挑每个组件 → Flask
• 纯 API、追求异步性能与类型提示 → FastAPI
1.3 安装 Django
# 建议用虚拟环境隔离依赖
$ python -m venv venv
$ source venv/bin/activate # Windows: venv\Scripts\activate
# 安装最新稳定版 Django
$ pip install django
$ django-admin --version
# 5.1.x
1.4 创建项目
# 创建名为 mysite 的项目(末尾的 . 表示当前目录)
$ django-admin startproject mysite .
# 启动开发服务器
$ python manage.py runserver
# Starting development server at http://127.0.0.1:8000/
打开浏览器访问 http://127.0.0.1:8000/,看到火箭欢迎页说明项目已跑起来。
1.5 项目目录结构
mysite/
├── manage.py # 命令行工具入口
├── mysite/
│ ├── __init__.py
│ ├── settings.py # 全局配置(数据库/App/中间件)
│ ├── urls.py # 根 URL 路由
│ ├── asgi.py # ASGI 部署入口
│ └── wsgi.py # WSGI 部署入口
└── db.sqlite3 # 默认 SQLite 数据库(迁移后生成)
- manage.py
- 项目管理脚本,封装了
django-admin并注入项目配置。runserver、migrate、createsuperuser都通过它执行。 - settings.py
- 项目大脑:
INSTALLED_APPS、DATABASES、MIDDLEWARE、TEMPLATES、DEBUG、ALLOWED_HOSTS都在这里。 - urls.py
- URL 分发的根节点,把不同路径映射到不同 App 的路由或视图。
1.6 关键配置速览
# mysite/settings.py(节选)
DEBUG = True # 生产环境必须改 False
ALLOWED_HOSTS = [] # 允许访问的域名/IP
INSTALLED_APPS = [
"django.contrib.admin", # 后台
"django.contrib.auth", # 认证
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3",
}
}
1.7 首次迁移与超级用户
# 应用内置 App 的迁移(建 auth/admin 等表)
$ python manage.py migrate
# 创建后台超级管理员
$ python manage.py createsuperuser
# Username / Email / Password ...
登录 Admin
迁移后访问 http://127.0.0.1:8000/admin/,用刚建的超级用户登录,即可看到 Django 自带的后台管理界面——这就是「自带电池」的第一份福利。
1.8 请求处理流程
一次请求在 Django 中的旅程:
- 浏览器发起 HTTP 请求到 WSGI/ASGI 服务器。
- 请求穿过 中间件(Middleware) 链。
- 根
urls.py按 URL 匹配到对应 View。 - View 调用 Model 读写数据,渲染 Template。
- 响应逆序穿过中间件返回浏览器。
1.9 小结与下一步
- Django 是「自带电池」的全功能框架,遵循 MTV 与 DRY。
- Project 是顶层容器,App 是可复用的功能单元。
startproject建项目、runserver起服务、migrate建表、createsuperuser建管理员。- 下一章进入 App 与 URL 路由——学会用
startapp拆分功能、用 URLconf 分发请求。