【问题标题】:Django - form.is_valid always returning trueDjango - form.is_valid 总是返回 true
【发布时间】:2012-07-23 07:33:25
【问题描述】:

我有以下表格:

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

还有以下观点:

def contact(request):
    from forms import ContactForm
    from django.contrib import messages

    if request.method == 'POST':
        form = ContactForm(request.POST)

        if form.is_valid:
            messages.success(request, 'Thank you for your feedback!')
        else:
            messages.error(request, 'Please correct the fields in red below.')

    else:
        form = ContactForm()

    t = loader.get_template('contact.html')
    c = RequestContext(request, {
        'ContactForm': form,
    })

    return HttpResponse(t.render(c))

我使用的是 Django 1.4,根据文档,默认情况下这些字段是必需的,因此我不需要为每个字段添加 required=True

出于某种原因,form.is_valid 始终为真。 Thank you for your feedback! 消息总是在我提交表单时出现,即使 form.name/email/message.errors 填充了错误!我也尝试过为每个字段显式设置required=True,但没有任何区别。

这就是我在contact.html 中显示消息的方式:

{% for message in messages %}
    <div class="alert alert-{{ message.tags }}">{{ message }}</div>
{% endfor %}

知道我做错了什么吗?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    替换

    if form.is_valid:
    

    if form.is_valid():
    

    【讨论】:

    • 当你意识到你已经花了几个小时调试一些微不足道的事情的那一刻!谢谢!
    猜你喜欢
    • 2011-08-18
    • 2014-09-06
    • 1970-01-01
    • 2014-12-27
    • 2018-01-05
    • 1970-01-01
    • 2018-12-17
    相关资源
    最近更新 更多