= 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 %}