Python 如何为表单中未完成的字段添加错误消息?

Python 如何为表单中未完成的字段添加错误消息?,python,django,forms,Python,Django,Forms,我正在做一张联系表。当我让Django在我的模板中用{{form.as_p}}解压表单的字段时,它的渲染效果很好,但是如果我不习惯手动渲染字段,那么我就有问题了 我想要的是在字段未完成时添加一条错误消息 这就是我使用django文档所做的 contact.html <form role="form" id="contact-form" action="" method="post"> {% csrf_token %}

我正在做一张联系表。当我让Django在我的模板中用
{{form.as_p}}
解压表单的字段时,它的渲染效果很好,但是如果我不习惯手动渲染字段,那么我就有问题了

我想要的是在字段未完成时添加一条错误消息

这就是我使用django文档所做的

contact.html

        <form role="form" id="contact-form"  action="" method="post">
            {% csrf_token %}
            {{ form.as_p }}
            <p class="contact-submit">
                <button id="contact-submit" class="submit" type="submit" value="Submit">Send</button>
            </p>
        </form>

你的缩进不正确。
else
块应与
if request.method==POST
一致

if request.method == 'POST':
    form = form_class(data=request.POST) 
    if form.is_valid():
       # process form and return response
else:
    form = form_class()
这样,当表单无效时,将使用带有post数据的绑定表单,并向用户显示任何错误。由于您有
required=True
,如果必填字段留空,Django将自动添加错误

其次,在呈现模板时,需要传递表单,而不是表单类

return render_to_response('papers/contact.html', {'form': form}, context_instance=RequestContext(request))

最后,最好在发送电子邮件后重定向到“谢谢”页面,而不是呈现“谢谢”模板。如果用户刷新“谢谢”页面,这将停止发送多封电子邮件。

您可以为表单编写一个干净的方法,顺便看看,您可以使用
render
而不是
render\u-to\u-response
,来简化代码,例如
返回render(请求,'papers/contact.html',{'form form\u-class})
。非常感谢,现在一切都讲得通了。
from django import forms

class ContactForm(forms.Form):
    contact_name = forms.CharField(required=True)
    contact_email = forms.EmailField(required=True,)
    content = forms.CharField(
        required=True,
        widget=forms.Textarea)


    def __init__(self, *args, **kwargs):
        super(ContactForm, self).__init__(*args, **kwargs)
        self.fields['contact_name'].label = "Name:"
        self.fields['contact_email'].label = "Email:"
        self.fields['content'].label = "Message"
if request.method == 'POST':
    form = form_class(data=request.POST) 
    if form.is_valid():
       # process form and return response
else:
    form = form_class()
return render_to_response('papers/contact.html', {'form': form}, context_instance=RequestContext(request))