Validating forms and retrieving Python values
So far, we have seen how Django forms make it much simpler to define a form using Python code and have it automatically rendered. We will now look at the other part of what makes Django forms useful: their ability to automatically validate the form and then retrieve native Python objects and values from them.
In Django, a form can either be unbound or bound. These terms describe whether or not the form has had the submitted POST
data sent to it for validation. So far, we have only seen unbound forms – they are instantiated without arguments, like this:
form = ExampleForm()
A form is bound if it is called with some data to be used for validation, such as the POST
data. A bound form can be created like this:
form = ExampleForm(request.POST)
A bound form allows us to start using built-in validation-related tools on the form instance. First, there’s the is_valid
method, which checks the form validity, then the cleaned_data...