- 在视图中使用Form对象
在视图中使用Form对象
在学习了关于Form类的基本知识后,你会看到我们如何把它用到视图中,取代contact()代码中不整齐的部分。 一下示例说明了我们如何用forms框架重写contact():
# views.pyfrom django.shortcuts import render_to_responsefrom mysite.contact.forms import ContactFormdef contact(request):if request.method == 'POST':form = ContactForm(request.POST)if form.is_valid():cd = form.cleaned_datasend_mail(cd['subject'],cd['message'],cd.get('email', 'noreply@example.com'),['siteowner@example.com'],)return HttpResponseRedirect('/contact/thanks/')else:form = ContactForm()return render_to_response('contact_form.html', {'form': form})# contact_form.html<html><head><title>Contact us</title></head><body><h1>Contact us</h1>{% if form.errors %}<p style="color: red;">Please correct the error{{ form.errors|pluralize }} below.</p>{% endif %}<form action="" method="post"><table>{{ form.as_table }}</table><input type="submit" value="Submit"></form></body></html>
看看,我们能移除这么多不整齐的代码! Django的forms框架处理HTML显示、数据校验、数据清理和表单错误重现。
尝试在本地运行。 装载表单,先留空所有字段提交空表单;继而填写一个错误的邮箱地址再尝试提交表单;最后再用正确数据提交表单。 (根据服务器的设置,当send_mail()被调用时,你将得到一个错误提示。而这是另一个问题。)
