2012-07-23 108 views
0

我有以下形式:Django的 - form.is_valid总是返回true

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总是如此。即使form.name/email/message.errors填充了错误,我仍然会在提交表单时出现Thank you for your feedback!消息!我也试过为每个字段明确设置required=True,但它没有区别。

这是我如何显示的消息在contact.html

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

任何想法,我做错了吗?

回答

3

更换

if form.is_valid: 

if form.is_valid(): 
+0

那一刻,当你意识到你已经花了几个小时的调试一些小事!谢谢! – abstractpaper 2012-07-23 07:38:02