【问题标题】:"Field is required message" before submitting form提交表单前的“必填字段”信息
【发布时间】:2011-10-31 12:42:24
【问题描述】:

一旦用户提交了表单并且他们没有填写必填字段,我会尝试抛出'必填字段'消息。
发生的事情是即使在提交表单之前就显示错误。不是应该在提交后进行验证吗?

我有以下表格:

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>

【问题讨论】:

    标签: django forms


    【解决方案1】:

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

    一种选择是为提交按钮命名...

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

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

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

    【讨论】:

    • 非常感谢。我不知道。我想POST是不一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多