Forms(The Definitive Guild to Django)
Django comes with a form library, called django.forms, that handles many of the issues we’ve been exploring in this chapter—from HTML form display to validation. Let’s dive in and rework our contact-form application using the Django forms framework.
1 from django import forms
2
3 class ContactForm(forms.Form):
4 subject = forms.CharField()
5 e-mail = forms.EmailField(required=False)
6 message = forms.CharField()
2
3 class ContactForm(forms.Form):
4 subject = forms.CharField()
5 e-mail = forms.EmailField(required=False)
6 message = forms.CharField()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> 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_subject" /></td></tr>
<tr><th><label for="id_e-mail">E-mail:</label></th><td>
<input type="text" name="e-mail" id="id_e-mail" /></td></tr>
<tr><th><label for="id_message">Message:</label></th><td>
<input type="text" name="message" id="id_message" /></td></tr>
>>> print f.as_ul()
<li><label for="id_subject">Subject:</label>
<input type="text" name="subject" id="id_subject" /></li>
<li><label for="id_e-mail">E-mail:</label>
<input type="text" name="e-mail" id="id_e-mail" /></li>
<li><label for="id_message">Message:</label>
<input type="text" name="message" id="id_message" /></li>
>>> print f.as_p()
<p><label for="id_subject">Subject:</label>
<input type="text" name="subject" id="id_subject" /></p>
<p><label for="id_e-mail">E-mail:</label>
<input type="text" name="e-mail" id="id_e-mail" /></p>
<p><label for="id_message">Message:</label>
<input type="text" name="message" id="id_message" /></p>
>>> f = ContactForm()
>>> print f
<tr><th><label for="id_subject">Subject:</label></th><td>
<input type="text" name="subject" id="id_subject" /></td></tr>
<tr><th><label for="id_e-mail">E-mail:</label></th><td>
<input type="text" name="e-mail" id="id_e-mail" /></td></tr>
<tr><th><label for="id_message">Message:</label></th><td>
<input type="text" name="message" id="id_message" /></td></tr>
>>> print f.as_ul()
<li><label for="id_subject">Subject:</label>
<input type="text" name="subject" id="id_subject" /></li>
<li><label for="id_e-mail">E-mail:</label>
<input type="text" name="e-mail" id="id_e-mail" /></li>
<li><label for="id_message">Message:</label>
<input type="text" name="message" id="id_message" /></li>
>>> print f.as_p()
<p><label for="id_subject">Subject:</label>
<input type="text" name="subject" id="id_subject" /></p>
<p><label for="id_e-mail">E-mail:</label>
<input type="text" name="e-mail" id="id_e-mail" /></p>
<p><label for="id_message">Message:</label>
<input type="text" name="message" id="id_message" /></p>