Django:当用户根本没有填写表格时如何引发异常?

时间:2012-11-29 06:01:21

标签: python django forms

当用户点击注册表单上的“提交”按钮时,如果没有在表单上填写任何字段,我该如何引发异常? < / p>


如果发生这种情况,我只想显示单个错误(“请在提交前填写表单。”),而不显示通常会显示的字段错误用户忘记填写必填字段。

换句话说,如果用户点击提交按钮而没有填写单个字段,我希望它只显示一个错误:“请在提交前填写该字段。”


我认为可能有两种方法可以达到这个目的:

  • 在表单的clean方法中的某处生成错误;并且在模板中有一个if语句,如果产生此错误则忽略所有其他错误

  • 一旦用户点击提交按钮,就会在实际模板中生成错误(我不确定这是否可行)。

第一个选项的问题是我需要使用if语句,如下所示。但我不知道如何挑出那个特定的错误。

{% if form.special_error %}
...display the special error
...disregard any other field or non_field errors
{% endif %}

我只知道如何在if语句中使用form.errorsform.non_field_errorsform.<specific_field>。这些都不会明确表明发生了这种特殊错误。

必须有一个简单的方法来做到这一点!!!

1 个答案:

答案 0 :(得分:3)

如果是这种情况,您可以在服务器端检查表单是否已更改而不是验证它。通过这样做:

def submit_form(request):
   if request.method == 'POST':
         form = Form(request.POST)
         if not form.has_changed():
             #Generate Error