对django表单run_validators()方法感到困惑
考虑这种形式:对django表单run_validators()方法感到困惑,django,Django,考虑这种形式: class LoginForm(forms.Form): email = forms.EmailField(label="Email", required = True) password = forms.CharField(label="Password", widget=forms.PasswordInput(), required=True) 当我验证表单时,我只希望使用一种错误方法:“无效的电子邮件和/或密码”,无论它是否是电子邮件字段、任何字段是否为空
class LoginForm(forms.Form):
email = forms.EmailField(label="Email", required = True)
password = forms.CharField(label="Password", widget=forms.PasswordInput(), required=True)
当我验证表单时,我只希望使用一种错误方法:“无效的电子邮件和/或密码”,无论它是否是电子邮件字段、任何字段是否为空或密码/电子邮件的组合是否不正确
经过研究,我相信(除非我错了)我需要使用运行_validators()
(来自django文档):“将所有错误聚合为一个ValidationError”)
但是,我不知道该如何定义它。您所指的
运行验证程序
方法是按字段的方法,因此并不能真正解决您的问题。它聚合了多个按字段的验证程序,如“字段不能为空”、“不是电子邮件地址”等,以拉出第一个失败的验证程序
如果您希望显示该消息时出现任何错误,我将在模板中处理它
您可以将您的需求重新表述为“如果表单无效,则显示一条错误消息”,否则,请成功登录
{% if form.errors %}
invalid email and/or password
{% endif %}
我看不出你为什么要修改表单以获得相同的最终效果,,但我认为这一点都不好玩
如果出于任何原因需要每个字段的错误,这里有一个我提出的覆盖所有错误的解决方案
def clean(self):
for key, value in self._errors.iteritems():
self._errors[key] = self.error_class(['invalid email and/or password'])
return self.cleaned_data
这也将考虑到非字段错误,因为它们在同一个目录中