第二站:URL、视图与模板
本站把“浏览工单”做成稳定 Web 合同。URL 负责定位资源,视图负责协调,模板负责展示。
可运行入口
bash
mkdir -p tickets/templates/tickets
python manage.py check
python manage.py runserver实现细节见URL、视图与模板边界和类视图、静态与媒体文件。
交付物与验收
tickets使用命名空间,模板只通过{% url %}反向生成地址。- 列表为空时有明确空状态;不存在详情返回 404。
- 用户输入默认转义,不用
safe掩盖来源不明的 HTML。 python manage.py test覆盖 200、404 和空列表。
深水边界
函数视图适合显式流程;通用类视图适合稳定 CRUD 生命周期。选择以可预测性为准。模板中访问关联对象可能触发查询,展示层仍可能制造 N+1。
练习(先不要看答案)
- 增加
/tickets/和/tickets/<int:pk>/,使用app_name。 - 详情页显示状态和创建时间,未知主键返回 404。
- 写测试证明 URL 名称改变时模板调用方不需要硬编码路径。