🔹 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_ 方法 (如 clean_password(),clean_avatar() 等)。
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()  # 保存到数据库

• 这一步完成数据的最终存储。

posted @   EricS9999  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示