表单

    if request.method == 'POST':
form = ContactForm(request.POST)#ContactForm('subject': 'hello', 'message': 'hoho', 'email': '1@1.com')
if form.is_valid():
cd = form.cleaned_data
send_mail(
cd['subject'],
cd['message'],
cd.get('email', 'noreply@example.com'),
['siteowner@example.com'],
)

        form = ContactForm(
**initial={'subject': 'I love your site!'}**

    请注意,传入* 初始值* 数据和传入数据以* 绑定* 表单是有区别的。
    最大的区别是,如果仅传入* 初始值* 数据,表单是unbound的,那意味着它没有错误消息。

  自定义校验规则

Django的form系统自动寻找匹配的函数方法,该方法名称以clean_开头,并以字段名称结束。 如果有这样的方法,它将在校验时被调用。
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


posted @ 2010-01-04 15:31  kid的笔记本  阅读(229)  评论(0编辑  收藏  举报