第五站:表单、认证、权限与 Admin
本站建立三道门:表单验证输入,认证确认身份,授权判断这个身份能否操作当前工单。Admin 只服务受信任的内部运营。
运行准备
bash
python manage.py createsuperuser
python manage.py runserver交付物
TicketForm使用字段白名单,不允许客户端指定负责人或关闭状态。- 创建和编辑视图要求登录;编辑还校验对象权限。
- Admin 有搜索、过滤、只读审计字段和受限查询集。
- 测试覆盖匿名、普通用户、对象所有者和管理员。
深水边界
is_staff 只表示可进入 Admin,不等于可看所有业务数据。模型权限默认是按模型的,不是对象级。自定义用户模型必须尽早确定;课程沿用默认用户,避免中途迁移身份主键。
练习(先做)
- 让普通用户只能编辑分配给自己的工单。
- Admin 中禁止普通 staff 删除关闭工单。
- 写越权测试,确保猜到别人的主键仍然得到 404 或 403。