Django学习笔记(五)―― 表单(三)

2015-07-20 18:06:46 · 作者: · 浏览: 35
= form.cleaned_data send_mail( cd['subject'], cd['message'], cd.get('email', 'noreply@example.com'), ['siteowner@example.com'], ) return HttpResponseRedirect('/contact/thanks/') else: form = ContactForm( initial={'subject': 'AAAAAA'} ) return render(request, 'contact_form.html', {'form': form})

?

注意:默认值与表单传入是有区别的,区别在于,如果仅仅传入默认值,是没有绑定的。

?

7. 自定义校验规则

?

例如我们需要添加 message 字段有一个额外的校验,我们就要摘forms类中添加 clean_message() 方法

?

例子:添加校验 messge中的单词数量(注意不是字母数量,看 split() )要不少于4个.

?

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    email = forms.EmailField(required=False)
    message = forms.CharField(widget=forms.Textarea)

    def clean_message(self):
        message = self.cleaned_data['message']
        num_words = len(message.split())
        if num_words < 4:
            raise forms.ValidationError(Not enough words!)
        return message



?

?

?

?

Contact us

{% if form.errors %}

Please correct the error{{ form.errors|pluralize }} below.

{% endif %}
?