2012-07-23 107 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