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常に true です。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 に答える