🔹 Django Form 和 Model 的校验执行流程
🔹 Django Form 和 Model 的校验执行流程
📌 1. 用户提交数据
• 用户在前端 HTML 表单中输入数据,并提交到服务器。
• Django 表单 (Form) 负责第一层校验。
📌 2. Django 表单校验 (form.is_valid())
• Django 先调用 form.is_valid() 方法,它会:
1. 检查字段是否符合规则 (如 required=True, min_length, max_length 等)。
2. 执行 clean_
3. 执行 clean() 方法 (用于校验多个字段间的逻辑,如密码匹配)。
• 如果 表单校验失败,Django 返回错误,终止存储,跳过 full_clean()。
📌 3. 创建 Model 实例
• 如果表单校验通过 (is_valid() 返回 True),会从 form.cleaned_data 获取数据,并创建模型实例:
user = UserInfo(**form.cleaned_data) # 不保存到数据库
• 这一步只是创建对象,但尚未存入数据库。
📌 4. Django Model 校验 (user.full_clean())
• 模型 full_clean() 方法在 save() 之前自动调用,执行:
1. 检查模型字段的唯一性 (unique=True)。
2. 执行 validators 里定义的验证器 (如 validate_avatar_file_size)。
3. 调用模型的 clean() 方法 处理更复杂的验证逻辑 (如用户名黑名单)。
• 如果 模型校验失败,Django 抛出 ValidationError,中止存储。
📌 5. 存入数据库 (user.save())
• 如果所有校验都通过,Django 执行:
user.set_password(password) # Hash 密码
user.save() # 保存到数据库
• 这一步完成数据的最终存储。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix