在提交表格之前,“字段是必填信息”

时间:2011-08-21 09:07:59

标签: django forms

用户提交表单后,我尝试抛出'字段必填'消息,但未填写必填字段。
发生的事情是,即使在提交表单之前,错误仍在显示。是否应该在提交后进行验证?

我有以下表格:

class LookforPlace(forms.Form):
    name = forms.CharField(required=True,max_length=100,label='Name',error_messages = {'required': "This field is required..."})
    city = forms.CharField(required=False,label='City')
    email = forms.EmailField()

我有以下观点:

def newreview(request):
    if request.method == 'GET': # If the form has been submitted...
        form = LookforPlace(request.GET) # A form bound to the GET data
        if form.is_valid(): # All validation rules pass
            return HttpResponseRedirect('/newreview/valid') # Redirect after GET
    else:

        form = LookforPlace() # An unbound form
    return render_to_response('newreview.html', {
        'form': form,
    })

我有以下HTML代码:

 <form action="/newreview/" method="get">
{% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>
    {% endfor %}
<input type="submit" value="Submit" />
</form>

1 个答案:

答案 0 :(得分:2)

当您正常浏览页面时会发出GET,而不仅仅是当您使用该方法提交表单时 - 如果您想使用相同的视图来显示初始表单并通过GET处理提交,您应该检查已提交表格的价值。

一个选项是为提交按钮命名...

<input type="submit" name="submit" value="Submit">

...并检查该名称是否已作为参数提交(这也是处理具有多个提交按钮的表单的好方法,因为只有单击的按钮才会被视为成功的控件并且其名称已提交作为请求中的参数):

if 'submit' in request.GET:
    # ...