1. 用法
在Form类中定义名称为 clean_ + form字段名称 的方法
校验成功 返回 self.clean_data["字段名"]
校验失败 会raise 报错
2. 源码分析
先从is_valid 方法开始分析
当self._is_bound = True, self.errors 为False时 校验成功
1. self._is_bound
当django项目启动时data是空的,也就是在get方法时实例化form类
当执行POST方法时传入request.POST
这里data就等于request.POST
self._is_bound = data = request.POST传递的信息
2. self.error
data 刚传递进来还没有执行校验self_error = None
会执行self.full_clean方法
2.1 self._clean_field()
self[name]在form源码分析2中有提及,
self[name] = form["mobile"] 拿到default_template生成的input标签
!! 下面的clean_field方法是关键
第一次for循环, 拿到 name = mobile, bf = self['mobile']
field = bf.field = self['mobile'].field = mobile对应的charfield
value = 15304274820
下面走到了try, except
try:
except:
如果有任何报错都会执行add_error方法,
将报错存入
如果try里有报错
执行add_error方法
标签:Form,mobile,self,Django,field,源码,报错,clean,data From: https://www.cnblogs.com/khalil12138/p/17626740.html