How forms work
Forms can be tricky to understand because interacting with them takes more than one request-response cycle. In the simplest scenario, you need to present an empty form, and the user fills it correctly and submits it. In other cases, they enter some invalid data and the form needs to be resubmitted until the entire form is valid.
So, a form goes through several states:
Empty form: This form is called an unbound form in Django
Filled form: This form is called a bound form in Django
Submitted form with errors: This form is called a bound form but not a valid form
Submitted form without errors: This form is called a bound and valid form
Note that the users will never see the form in the last state. They don't have to. Submitting a valid form should take the users to a success page.
Forms in Django
Django's form
class contains the state of each field and, by summarizing them up a level, of the form itself. The form has two important state attributes, which are as follows:
is_bound
...