>>> f = ContactForm({'subject': 'Hello', 'message': ''})
>>> f.errors['message']
>>> [u'This field is required.']
>>> f['message'].errors
>>> [u'This field is required.']
第 3 行和第 5 行的 b/w 有什么区别?他们有不同的目的吗?
当您访问时f['message'].errors
,您正在使用该BoundField.errors
属性。
如果查看源代码,您会看到它BoundField.errors
尝试从表单的错误中获取错误列表(如果存在)。
@property
def errors(self):
"""
Returns an ErrorList for this field. Returns an empty ErrorList
if there are none.
"""
return self.form.errors.get(self.name, self.form.error_class())
在字段没有错误的情况下,该BoundField.error
属性返回一个空的错误列表,因此行为略有不同。
>>> f = ContactForm({'subject': 'Hello', 'message': 'world!'})
>>> f.errors
{}
>>> f.errors['message']
KeyError
>>> f['message'].errors
>>> []
在字段上具有此错误属性可以轻松地循环遍历模板中的表单字段并显示错误。
{% for field in form %}
{{ field }}
{{ field.errors }}
{% endfor %}