使用校验后的数据
调用表单is_valid()方法时会执行数据校验,当所有字段数据均合法时,该方法返回True,否则返回False。
执行校验时,Django为表单对象创建了cleaned_data属性,通过校验的数据是"有效的",被保存在表单的cleaned_data属性中。
cleaned_data属性只能在执行校验之后访问,否则会触发AttributeError异常。
>>> class bound_test(forms.Form):
... name=forms.CharField(max_length=50)
... age=forms.IntegerField(max_value=50)
...
>>> d=bound_test({"name":"mike","age":20})
>>> d.cleaned_data
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'bound_test' object has no attribute 'cleaned_data' 【因为未提前做校验,所以报错:AttributeError异常。】
>>> d.is_valid() 【校验表单】
True
>>> d.cleaned_data 【获取被校验后的数据】
{'age': 20, 'name': 'mike'}
>>> d=bound_test({"name":"mike","age":80})
>>> d.is_valid() 【校验表单】
False
>>> d.cleaned_data 【获取被校验后的数据,因为age限制了最大值50,所以超过了50的值不被校验成功】
{'name': 'mike'}
>>> d.errors 【获取校验失败的错误信息】
{'age': ['Ensure this value is less than or equal to 50.']}
>>> d.errors.as_json() 【获取校验失败的错误信息,转成json格式】
'{"age": [{"code": "max_value", "message": "Ensure this value is less than or equal to 50."}]}'
>>> d.errors.get_json_data() 【获取校验失败的错误信息,转成json格式2】
{'age': [{'code': 'max_value', 'message': 'Ensure this value is less than or equal to 50.'}]}
>>>
网友评论