1

我有以下表格:

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 %}

知道我做错了什么吗?

4

1 回答 1

4

代替

if form.is_valid:

if form.is_valid():
于 2012-07-23T07:36:19.947 回答