【发布时间】:2010-09-16 09:02:06
【问题描述】:
在我的form.Form 验证用户输入值后,我将它们传递给单独的(外部)进程以进行进一步处理。此外部过程可能会在值中发现更多错误。
有没有办法将这些错误注入到已经验证的表单中,以便它们可以通过通常的表单错误显示方法显示(或者有更好的替代方法)?
一个建议是在表单验证中包含外部处理,这并不理想,因为外部处理不仅仅是验证。
【问题讨论】:
标签: django django-forms
在我的form.Form 验证用户输入值后,我将它们传递给单独的(外部)进程以进行进一步处理。此外部过程可能会在值中发现更多错误。
有没有办法将这些错误注入到已经验证的表单中,以便它们可以通过通常的表单错误显示方法显示(或者有更好的替代方法)?
一个建议是在表单验证中包含外部处理,这并不理想,因为外部处理不仅仅是验证。
【问题讨论】:
标签: django django-forms
向特定字段添加错误:
form.add_error('fieldName', 'error description')
**向非字段添加错误**
form.add_error(None, 'error description')
#Only pass None instead of field name
【讨论】:
Form._errors 可以被视为标准字典。使用ErrorList 类并将错误附加到现有列表中被认为是一种很好的形式:
from django.forms.utils import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")
如果要添加非字段错误,请使用django.forms.forms.NON_FIELD_ERRORS(默认为"__all__")而不是"myfield"。
【讨论】:
_errors 是公共表单 API 的一部分,尽管它的名称如此;有关文档链接,请参阅 insin 的答案。
对于 Django 1.7+,您应该使用 form.add_error() 而不是直接访问 form._errors。
文档:https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error
【讨论】:
【讨论】:
add_error 函数:docs.djangoproject.com/en/dev/ref/forms/api/…