Form、ModelForm 与输入校验
Django Web 开发#Python全栈#第十一阶段#Django Web 开发#Form、ModelForm 与输入校验约 802 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Form 与 ModelForm 有什么区别?
追问 搜索条件、登录输入与模型编辑各如何选择?模型字段能否代替所有页面和业务校验规则?
绑定表单与未绑定表单有什么区别?
追问 首次展示、用户提交与 initial 数据怎样分别处理?空的提交字典为何不能简单当作“没有提交”?
is_valid、cleaned_data 与 errors 应怎样使用?
追问 原始请求值与清洗后的类型可能有何不同?校验失败时哪些数据可以使用,如何展示字段及非字段错误?
字段验证器、clean_字段名 与 clean 各适合什么校验?
追问 单字段格式、重复值和两个字段之间的约束怎样分配?前序字段无效时如何避免读取不存在的 cleaned_data?
ModelForm 怎样结合模型进行校验?
追问 自定义 clean 时怎样保留父类行为?未包含在表单中的字段和数据库唯一性竞争,为何仍需另行处理?
ModelForm.save(commit=False) 能完成什么?
追问 如何在保存前赋予当前用户等服务端字段?多对多数据为什么需要在实例保存后通过相应步骤处理?
ModelForm 为什么通常应明确列出可编辑字段?
追问 使用所有字段时,后续增加 owner、审核状态或权限字段可能怎样意外开放修改?隐藏控件是否能形成授权边界?
上传文件的表单需要哪些前端和后端配合?
追问 multipart 编码、request.FILES、表单绑定与存储如何衔接?大小、内容和失败清理分别在哪一层处理?
Django 的 CSRF 中间件、模板令牌与 AJAX 请求头怎样配合?
追问 为什么有 Cookie 身份还需要 CSRF 校验?令牌、来源或可信来源设置错误时,如何解释 403,而不是直接豁免全部请求?
表单校验失败和保存成功后的页面流程应如何组织?
追问 保留原输入、错误提示、Messages 和提交后重定向怎样配合?为什么重定向不能独自保证写操作幂等?
核对资料: Django 表单、Django ModelForm。