Forms can be defined, in a similar manner to models, by subclassing django.forms.Form
.
Various field input options are available such as CharField
, URLField
, IntegerField
, etc.
Defining a simple contact form can be seen below:
from django import forms
class ContactForm(forms.Form):
contact_name = forms.CharField(
label="Your name", required=True,
widget=forms.TextInput(attrs={'class': 'form-control'}))
contact_email = forms.EmailField(
label="Your Email Address", required=True,
widget=forms.TextInput(attrs={'class': 'form-control'}))
content = forms.CharField(
label="Your Message", required=True,
widget=forms.Textarea(attrs={'class': 'form-control'}))
Widget is Django's representation of HTML user-input tags and can be used to render custom html for form fields (eg: as a text box is rendered for the content input here)
attrs
are attributes that will be copied over as is to the rendered html for the form.
Eg:
content.render("name", "Your Name")
gives
<input title="Your name" type="text" name="name" value="Your Name" class="form-control" />