>>> f = ContactForm({'subject': 'Hello', 'message': ''})
>>> f.errors['message']
>>> [u'This field is required.']
>>> f['message'].errors
>>> [u'This field is required.']
与第3和第3相比有什么不同?第5行?他们有不同的目的吗?
答案 0 :(得分:0)
当您访问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
>>> []
在字段上具有此errors属性可以轻松遍历模板中的表单字段,并显示错误。
{% for field in form %}
{{ field }}
{{ field.errors }}
{% endfor %}