Ang*_*ela 9 python django django-forms
我有一个有几个领域的表格.我通过表单验证对每个字段进行单独的验证检查.但是,在将用户重定向到不同视图之前,我还需要检查是否填写了少量字段.我希望我能以某种方式将错误附加到forms.non_field_errors,因为它不适用于特定字段,但我不确定这是什么正确的语法.我在网上查了一下,发现..
form.errors['__all__'] = form.error_class(["error msg"])
Run Code Online (Sandbox Code Playgroud)
这会显示错误消息,但它似乎也会弄乱其他页面,如果我点击其他任何内容,则会显示错误消息.
我试过了
form._errors[NON_FIELD_ERRORS] = form.error_class()
Run Code Online (Sandbox Code Playgroud)
这导致'NoneType'对象没有属性'setdefault'错误.
我试过了
form.non_field_errors().append("Please complete your profile in order to access the content.")
Run Code Online (Sandbox Code Playgroud)
这似乎没有做任何事情,我无法在视图上看到错误消息.
最好的方法是什么?理想情况下,我不想在表单的干净方法中这样做.我觉得我应该能够在视图中向表单添加错误.
jpi*_*pic 17
调用full_clean(),这应该初始化form._errors
.此步骤至关重要,如果您不这样做,它将无法正常工作.
制作错误列表,它需要一个消息列表,将其实例化为:error_list = form.error_class(['your error messages'])
分配错误列表NON_FIELD_ERRORS,你必须输入NON_FIELD_ERRORS
从django.forms.forms
,然后分配这样:form._errors[NON_FIELD_ERRORS] = error_list
这是shell的演示:
In [1]: from bet.forms import BetForm
In [2]: from django.forms.forms import NON_FIELD_ERRORS
In [3]: form = BetForm()
In [4]: form.full_clean()
In [5]: form._errors[NON_FIELD_ERRORS] = form.error_class(['your error messages'])
In [6]: form.non_field_errors()
Out[6]: [u'your error messages']
Run Code Online (Sandbox Code Playgroud)
这有点过时了,但我最近遇到了同样的问题,并希望为未来的读者进一步了解这一点。
__all__
例子:
if form.is_valid():
form.errors['__all__'] = form.error_class(['Your Error Here!'])
Run Code Online (Sandbox Code Playgroud)