第一站:项目、配置与请求生命周期
本站交付一个可以重复启动的 Django 项目和 /health/。先使用 SQLite 降低起步成本,但把配置边界设计成之后能切换目标数据库。
运行基线
bash
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install "Django~=6.0.0"
django-admin startproject config .
python manage.py startapp tickets
python manage.py migrate
python manage.py check随后学习项目、settings 与请求链路和环境配置与应用启动。
交付物
config/只放全局入口与配置,tickets/放工单业务。tickets已加入INSTALLED_APPS。/health/返回 JSON 和 200;未知路径返回 404。- 依赖约束和实际安装版本均可追溯。
深水边界
runserver 是开发服务器。它能验证路由和代码,不证明生产并发、TLS、静态文件或优雅停机。不要在 AppConfig.ready() 中执行查询或外部请求;管理命令、测试和多个 worker 都可能触发应用初始化。
Django 5.2 LTS 可把安装约束换成 Django~=5.2.0。两条版本线使用独立虚拟环境,不在一份锁文件中“随机兼容”。
练习(无答案展开)
- 让
/health/只接受 GET,并为 POST 返回 405。 - 在响应中加入 Django 版本,不返回数据库密码、路径或环境变量。
- 写出请求经过服务器、middleware、URL resolver、view、response middleware 的顺序。
完成后再看练习答案。验收:python manage.py check 退出 0,GET /health/ 为 200,POST 为 405。