Examples
First import the needed modules…
>>> from wtforms import Form
>>> from wtforms.validators import Length, NumberRange, DataRequired
>>> from wtforms_html5 import TextField, IntegerField, DateField
>>> from wtforms_html5 import DateRange
And some extra stuff for our examples (nomally not needed)
>>> from datetime import date
>>> from werkzeug.utils import MultiDict
Then comes the main part: declare your form. This works just like vanilla
WTForms, just use the fields you imported from wtforms_html5
instead…
>>> class TestForm(Form):
... name = TextField('Name', validators=[DataRequired(), Length(5, 25)])
... number = IntegerField('Number', validators=[NumberRange(1000, 9999)], description='Some stuff...')
... date = DateField('Date:', validators=[DateRange(date(2000,1,1), date(2012,4,20))])
...
Now let’s see, how the generated input fields look like… the min,
max, required and title attributes where auto-generated from the
declaration.
>>> f = TestForm()
>>> f.name()
u''
>>> f.number()
u''
>>> f.date()
u''
And finally some quick tests for DateRange and the setting of the
invalid class on error…
>>> d = MultiDict({'name':'Testor', 'date':'1995-05-01'})
>>> f.process(d) # enter the data to the form
>>> f.validate() # and check for errors...
False
>>> f.errors
{'date': ['Date must be >= 2000-01-01.'], 'number': [u'Number must be between 1000 and 9999.']}
>>> f.number()
u''