本文纯手工搬运,为自己学习记录使用.
Django带有一个form库,称为django.forms
表单框架最主要的用法是,为每一个将要处理的HTML的<Form>
定义一个 Form 类
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField()
email = forms.EmailField(required=False)
message = forms.CharField()
这看上去简单易懂,并且很像在模块中使用的语法。 表单中的每一个字段(域)作为 Form 类的属性,被展现
成 Field 类。这里只用到 CharField 和 EmailField 类型。 每一个字段都默认是必填。要使 email 成为可选项,我
们需要指定 required=False 。
让我们钻研到Python解释器里面看看这个类做了些什么。 它做的第一件事是将自己显示成HTML:
>>> from contact.forms import ContactForm
>>> f = ContactForm()
>>> print f
<tr><th><label for="id_subject">Subject:</label></th><td><input type="text" name="subject" id="id_
<tr><th><label for="id_email">Email:</label></th><td><input type="text" name="email" id="id_email"
<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_
为了便于访问,Django用<label>
标志,为每一个字段添加了标签。 这个做法使默认行为尽可能合适。
默认输出按照HTML的<table
>格式,另外有一些其它格式的输出:
>>> print f.as_ul()
<li><label for="id_subject">Subject:</label> <input type="text" name="subject" id="id_subject" /><
<li><label for="id_email">Email:</label> <input type="text" name="email" id="id_email" /></li>
<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /><
>>> print f.as_p()
<p><label for="id_subject">Subject:</label> <input type="text" name="subject" id="id_subject" /></
<p><label for="id_email">Email:</label> <input type="text" name="email" id="id_email" /></p>
<p><label for="id_message">Message:</label> <input type="text" name