0
0
mirror of https://github.com/django/django.git synced 2024-12-01 15:42:04 +01:00

Minor edits to docs/ref/forms/validation.txt

This commit is contained in:
I am Clinton 2015-05-23 20:57:02 -05:00 committed by Tim Graham
parent 614bec41b5
commit 73b5b0b4a5

View File

@ -6,10 +6,10 @@ Form and field validation
========================= =========================
Form validation happens when the data is cleaned. If you want to customize Form validation happens when the data is cleaned. If you want to customize
this process, there are various places you can change, each one serving a this process, there are various places to make changes, each one serving a
different purpose. Three types of cleaning methods are run during form different purpose. Three types of cleaning methods are run during form
processing. These are normally executed when you call the ``is_valid()`` processing. These are normally executed when you call the ``is_valid()``
method on a form. There are other things that can trigger cleaning and method on a form. There are other things that can also trigger cleaning and
validation (accessing the ``errors`` attribute or calling ``full_clean()`` validation (accessing the ``errors`` attribute or calling ``full_clean()``
directly), but normally they won't be needed. directly), but normally they won't be needed.
@ -25,35 +25,35 @@ reused easily. Validators are simple functions (or callables) that take a single
argument and raise ``ValidationError`` on invalid input. Validators are run argument and raise ``ValidationError`` on invalid input. Validators are run
after the field's ``to_python`` and ``validate`` methods have been called. after the field's ``to_python`` and ``validate`` methods have been called.
Validation of a Form is split into several steps, which can be customized or Validation of a form is split into several steps, which can be customized or
overridden: overridden:
* The ``to_python()`` method on a Field is the first step in every * The ``to_python()`` method on a ``Field`` is the first step in every
validation. It coerces the value to correct datatype and raises validation. It coerces the value to a correct datatype and raises
``ValidationError`` if that is not possible. This method accepts the raw ``ValidationError`` if that is not possible. This method accepts the raw
value from the widget and returns the converted value. For example, a value from the widget and returns the converted value. For example, a
FloatField will turn the data into a Python ``float`` or raise a ``FloatField`` will turn the data into a Python ``float`` or raise a
``ValidationError``. ``ValidationError``.
* The ``validate()`` method on a Field handles field-specific validation * The ``validate()`` method on a ``Field`` handles field-specific validation
that is not suitable for a validator. It takes a value that has been that is not suitable for a validator. It takes a value that has been
coerced to correct datatype and raises ``ValidationError`` on any error. coerced to a correct datatype and raises ``ValidationError`` on any error.
This method does not return anything and shouldn't alter the value. You This method does not return anything and shouldn't alter the value. You
should override it to handle validation logic that you can't or don't should override it to handle validation logic that you can't or don't
want to put in a validator. want to put in a validator.
* The ``run_validators()`` method on a Field runs all of the field's * The ``run_validators()`` method on a ``Field`` runs all of the field's
validators and aggregates all the errors into a single validators and aggregates all the errors into a single
``ValidationError``. You shouldn't need to override this method. ``ValidationError``. You shouldn't need to override this method.
* The ``clean()`` method on a Field subclass. This is responsible for * The ``clean()`` method on a ``Field`` subclass is responsible for running
running ``to_python``, ``validate`` and ``run_validators`` in the correct ``to_python()``, ``validate()``, and ``run_validators()`` in the correct
order and propagating their errors. If, at any time, any of the methods order and propagating their errors. If, at any time, any of the methods
raise ``ValidationError``, the validation stops and that error is raised. raise ``ValidationError``, the validation stops and that error is raised.
This method returns the clean data, which is then inserted into the This method returns the clean data, which is then inserted into the
``cleaned_data`` dictionary of the form. ``cleaned_data`` dictionary of the form.
* The ``clean_<fieldname>()`` method in a form subclass -- where * The ``clean_<fieldname>()`` method is called on a form subclass -- where
``<fieldname>`` is replaced with the name of the form field attribute. ``<fieldname>`` is replaced with the name of the form field attribute.
This method does any cleaning that is specific to that particular This method does any cleaning that is specific to that particular
attribute, unrelated to the type of field that it is. This method is not attribute, unrelated to the type of field that it is. This method is not
@ -70,15 +70,14 @@ overridden:
formfield-specific piece of validation and, possibly, formfield-specific piece of validation and, possibly,
cleaning/normalizing the data. cleaning/normalizing the data.
This method should return the cleaned value obtained from cleaned_data, This method should return the cleaned value obtained from ``cleaned_data``,
regardless of whether it changed anything or not. regardless of whether it changed anything or not.
* The Form subclass's ``clean()`` method. This method can perform * The form subclass's ``clean()`` method can perform validation that requires
any validation that requires access to multiple fields from the form at access to multiple form fields. This is where you might put in checks such as
once. This is where you might put in things to check that if field ``A`` "if field ``A``is supplied, field ``B`` must contain a valid email address".
is supplied, field ``B`` must contain a valid email address and the This method can return a completely different dictionary if it wishes, which
like. This method can return a completely different dictionary if it wishes, will be used as the ``cleaned_data``.
which will be used as the ``cleaned_data``.
Since the field validation methods have been run by the time ``clean()`` is Since the field validation methods have been run by the time ``clean()`` is
called, you also have access to the form's ``errors`` attribute which called, you also have access to the form's ``errors`` attribute which