Django:从视图中添加非\u字段\u错误?

Django:从视图中添加非\u字段\u错误?,django,django-forms,Django,Django Forms,我有一个Django表单,其中有一组字段,我正在模板中呈现这些字段。我还有一些直接的HTML输入元素,我想通过访问request.POSTvars在视图中验证这些元素。如果没有验证,我想在Django表单中插入一个错误,以便在页面上显示它。有办法吗?嗯,您可以将任何内容插入表单的错误字典,而非字段错误则进入错误[''''''.\u所有错误] 但是,为什么要将一些字段保留在Django表单之外,而最终却将它们的错误放回Django表单?为什么不把表单中的所有字段放在首位呢?如果只是您正在使用一个m

我有一个Django表单,其中有一组字段,我正在模板中呈现这些字段。我还有一些直接的HTML输入元素,我想通过访问
request.POST
vars在视图中验证这些元素。如果没有验证,我想在Django表单中插入一个错误,以便在页面上显示它。有办法吗?

嗯,您可以将任何内容插入表单的
错误
字典,而非字段错误则进入
错误[''''''.\u所有错误]

但是,为什么要将一些字段保留在Django表单之外,而最终却将它们的错误放回Django表单?为什么不把表单中的所有字段放在首位呢?如果只是您正在使用一个modelform,并且您想向其中添加字段,那么您可以在Django中通过在表单级别声明字段来实现这一点,然后您可以在表单中为它们定义干净的方法

class ExtendedModelForm(forms.ModelForm):
    extra_field_1 = forms.CharField()
    extra_field_2 = forms.CharField()

    def clean_extra_field_1(self):
        ...etc...

除了Daniel的回答之外,具体的语法是:

form.errors['__all__'] = form.error_class(["error msg"])
请注意,您可以用常量
非字段\u错误
替换
“\uuuuuu all”
,以获得更好的兼容性(信用)


你也可以使用非常优雅的方法。适用于Django>=1.7

如果将
字段
设置为
表单将错误视为“非字段”错误。 因此:

form.add\u错误(无,“我不是字段错误”)


工作起来很有魅力。

请参见我的另一个问题:字段需要大量自定义,这在表单中很难实现。@标记仅仅是因为您想自定义显示,并不意味着您不能出于验证和错误显示的目的在表单中包含字段。对。。如果我给它起个恰当的名字,Django就不会知道区别了,是吗?
from django.forms.forms import NON_FIELD_ERRORS