Python菜鸟之路:Django 数据验证之钩子和Form表单验证
2024-09-01 06:35:12
一、钩子功能提供的数据验证
对于数据验证,django会执行 full_clean()方法进行验证。full_clean验证会经历几个步骤,首先,对于model的每个字段进行正则验证,正则验证通过后,然后进行clean()方法验证,这里的clean函数,就是钩子函数。通常是需要我们自己去书写。
分析上述钩子函数的弊端:如果在model数据库中,有多个字段都需要进行数据验证,则需要在每个字段后都需要有钩子存在才可以,而clean方法是对整体进行数据验证,并不能完成对于每个字段的验证。
结论:由于钩子功能较弱,并且验证不通过会抛出异常,对于用户来说并不友好,因此通常不用钩子来进行验证。
二、Form内置钩子
Form的验证功能,经历四个阶段
- 字段的自定义正则表达式
- 字段的钩子函数,比如 name字段对应的clean_name方法
- 执行clean方法的钩子
- 执行_post_clean方法的钩子
其中,前两个验证是以每个字段来循环验证的。
每一种错误信息,放在每个字段的错误信息中,对于整体的,放到了self.errors['__all__'] 值的list中。
最新文章
- 在Mac中像Windows一样查看Tomcat控制台信息
- [已解决] MAVEN安装代码到本地库,安装jar, source, javadoc的方式
- eclipse debug maven项目时出现缺少库的问题
- iTop各数据表联系图(持续更新中)
- PE刷题记录
- Ubuntu及Windows ADB设备no permissions的解决方案
- Swift中的单例的实现方式
- PHP AOP
- Welcome to Apache™ Hadoop®!
- 2013 ACM/ICPC 成都网络赛解题报告
- 《Linux命令行与shell脚本编程大全》- 读书笔记3 - 理解shell
- vue项目开发中遇到的问题总结--内部分享
- 记我的第二次自动化尝试——selenium+pageobject+pagefactory实现自动化下单、退款、撤销回归测试
- 博弈论进阶之Anti-SG游戏与SJ定理
- Git入门—创建项目
- Redis的五种数据类型
- java中的dao模式
- ZOJ 2060 A-Fibonacci Again
- POJ - 1456 贪心 堆常用操作 注意细节
- CF840C On the Bench 解题报告
热门文章
- ZooKeeperEclipse 插件
- Unity对象与Draw Calls的关系
- 汉诺塔(-) java modPow 的用法;
- poj Squares n个点,共能组成多少个正方形 二分 + 哈希
- [android] 本地推送服务
- WEB前端面试题 分别使用2个、3个、5个DIV画出一个大的红十字
- How to add total page to Odoo Report(7.0 version)
- JVM Specification 9th Edition (3) Chapter 2. The Structure of the Java Virtual Machine
- ARM与X86架构的对决[整编]
- php 判断是否在微信浏览器中打开