在模板django中显示错误

时间:2015-12-27 07:58:07

标签: django django-templates

我使用django的form.add_error选项将自定义错误添加到

表格检查。

当我在ModelForm中使用add_error时,错误显示在

模板,但是当我在视图中使用它时,它不会......

可能是什么问题?

modelform add_error(在clean方法中):

self.add_error('field', "fdgdsfgfds.")

视图add_error:

def form_valid(self, form):
    form.add_error('field', "sfsfdsfsd.")
    return self.form_invalid(form)    

在模板中:

{{ form.errors }}
{{ field.errors }}
{{ form.non_field_errors }}
{{ form.as_table }}

1 个答案:

答案 0 :(得分:2)

Django模型表单有一定的工作方式,这本质上是一件好事,因为它可以确保您的代码保持干净,并且每个方法都有一个标准化的流控制。

表单cleanclean_fieldname方法应该是您完成所有验证的地方,这些方法是从表单is_valid方法中调用的,所有这些方法都会因为错误而导致声明表格是否有效。有关is_valid如何实际调用干净方法

的更详细说明,请参阅my other answer

form_validform_invalid供您在视图中处理,以处理应显示的响应。如果表单有效,默认情况下django通用视图将呈现success_url,尽管您可能会发现要覆盖这些方法以返回JsonResponse或类似方法以使表单更具ajaxxy。

因此,只要您想报告错误,就需要使用干净的方法。您可能会在将来发现要重复使用表单,并且您不希望通过再次进行验证而在视图中重复自己,因此保留表单中包含的所有验证可以实现这一点。视图作业是处理您希望显示表单的位置以及它需要的其他上下文。