Form.is_bound
检查某个form是否关联了数据。
1 | f = ContactForm() |
即使传入空字典,也会bound:1
2
3 f = ContactForm({})
f.is_bound
True
此外:
- 若已bound:form可以validating和rendering
- 如果unbound:form不可validation,但任可以rendering
- Form instance应当视为immutable
Form.clean()
参考 Cleaning and validating fields that depend on each other
Form.is_valid()
Form对象的一个重要用途就是检查数据是否准备。对bound的Form对象,可以使用is_valid()方法去判定数据是否有效。
Form.errors
1 | f.errors |
- 即使没有先使用
is_valid()
方法,也可以访问errors
。 - form的数据在访问
errors
属性或调用is_valid()
方法时,都会被验证。 - fomr的validation仅会被调用一次。
Fomr.errors.as_data()
1 | f.errors.as_data() |
同理还有as_json()
依赖于as_data()
Form.errors.as_json(escape_html=False)
1 | f.errors.as_json() |
Form.errors.get_json_data(escape_html=False)
Returns the errors as a dictionary suitable for serializing to JSON. Form.errors.as_json()
returns serialized JSON, while this returns the error data before it’s serialized.
Form.add_error(field, error)
- 在
Form.clean()
里面或外面,为特定的field添加错误信息 field
是要被添加错误信息的域的名字,如果没有填写,则会存进Form.non_field_errors()
error
通常是一个字符串,或者最好是ValidationError
,参见 Raising ValidationError 获取最佳实践- Note that Form.add_error() automatically removes the relevant field from cleaned_data. (这句话什么意思)
Form.has_error(field, code=None)
This method returns a boolean designating whether a field has an error with a specific error code. If code is None, it will return True if the field contains any errors at all.
To check for non-field errors use NON_FIELD_ERRORS as the field parameter.
Form.non_field_errors()
返回Form.errors
里没有跟任何field关联的错误,包括Form.clean()
里raise的错误和,Form.add_error(None, "...")
添加的错误。
unbound form的行为
1 | f = ContactForm() |