NewForms
Since newforms is mostly undocumented at the moment this page summarizes some useful information. This documentation should be considered complementary to the documentation on http://www.djangoproject.com/documentation/newforms/. It's mostly information extracted from the unit tests for newforms at the moment.
Widgets Unit tests
Each Widget
subclass corresponds to an HTML form widget. A Widget
knows how to
render itself, given a field name and some data. Widgets don't perform
validation.
Widget types
List of Widget
types with their associated unit test for easy lookup.
TextInput Unit test
PasswordInput Unit test
HiddenInput Unit test
MultipleHiddenInput Unit test
FileInput Unit test
Textarea Unit test
CheckboxInput Unit test
Select Unit test
NullBooleanSelect Unit test
SelectMultiple Unit test
RadioSelect Unit test
CheckboxSelectMultiple Unit test
Multi Unit test
SplitDateTime Unit test
Fields
Each Field
class does some sort of validation. Each Field
has a clean()
method, which either raises django.newforms.ValidationError
or returns the "clean" data -- usually a Unicode object, but, in some rare cases, a list.
Each Field
's __init__()
takes at least these parameters:
- required -- Boolean that specifies whether the field is required.
True
by default. - widget -- A Widget class, or instance of a Widget class, that should be used for this Field when displaying it. Each Field has a default widget that it'll use if you don't specify this. In most cases, the default widget is TextInput.
- label -- A verbose name for this field, for use in displaying this field in a form. By default, Django will use a "pretty" version of the form field name, if the Field is part of a Form.
- initial -- A value to use in this Field's initial display. This value is *not* used as a fallback if data isn't given.
Other than that, the Field subclasses have class-specific options for __init__()
. For example, CharField has a max_length
option.
Field types Unit tests
List of field types with their associated unit test for easy lookup.
CharField Unit test
Arguments:
- max_length -- (optional) Maximum number of characters
- min_length -- (optional) Minimum number of characters
IntegerField Unit test
Arguments:
- max_value -- (optional) Maximum value
- min_value -- (optional) Minimum value
FloatField Unit test
DecimalField Unit test
DateField Unit test
Arguments:
- input_formats -- (optional) A list of
strftime()
input formats. These will override all other input formats
TimeField Unit test
DateTimeField Unit test
RegexField Unit test
Arguments:
- regex -- The regular expression in compiled or string form that the input should match
EmailField Unit test
Arguments:
- min_length -- Minimum length
- max_length -- Maximum length
URLField Unit test
Arguments:
- min_length -- Minimum length
- max_length -- Maximum length
- verify_exists -- Defaults to False. If True, verifies that the URL is live on the Internet and doesn't return a 404 or 500
BooleanField Unit test
Since HTML forms either return something like 'fieldname=on
' in request.POST
or request.GET
, this value may not be set in form.clean_data()
.
Arguments:
- None
ChoiceField Unit test
Arguments:
- choices -- A list of (key, value) pairs
MultipleChoiceField Unit test
Arguments:
- choices -- A list of (key, value) pairs
ComboField Unit test
ComboField takes a list of fields that should be used to validate a value, in that order.
Arguments:
- choices -- A list of fields used to validate the input value
SplitDateTimeField Unit test
Forms Unit test
A Form is a collection of Fields. It knows how to validate a set of data and it knows how to render itself in a couple of default ways (e.g., an HTML table).
You can pass it data in __init__()
, as a dictionary, this data will usually come from request.POST
or request.GET
. The dictionaries passed to form need not be complete, a partial or empty dictionary is valid too. If you don't pass any values to the Form's __init__()
, or if you pass None
, the Form won't do any validation. Form.errors
will be an empty dictionary but Form.is_valid()
will return False
.