parts/django/docs/ref/validators.txt
changeset 307 c6bca38c1cbf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/parts/django/docs/ref/validators.txt	Sat Jan 08 11:20:57 2011 +0530
@@ -0,0 +1,158 @@
+==========
+Validators
+==========
+
+.. versionadded:: 1.2
+.. module:: django.core.validators
+    :synopsis: Validation utilities and base classes
+
+Writing validators
+==================
+
+A validator is a callable that takes a value and raises a
+:exc:`~django.core.exceptions.ValidationError` if it doesn't meet some
+criteria. Validators can be useful for re-using validation logic between
+different types of fields.
+
+For example, here's a validator that only allows even numbers::
+
+    from django.core.exceptions import ValidationError
+
+    def validate_even(value):
+        if value % 2 != 0:
+            raise ValidationError(u'%s is not an even number' % value)
+
+You can add this to a model field via the field's :attr:`~django.db.models.Field.validators`
+argument::
+
+    from django.db import models
+
+    class MyModel(models.Model):
+        even_field = models.IntegerField(validators=[validate_even])
+
+Because values are converted to Python before validators are run, you can even
+use the same validator with forms::
+
+    from django import forms
+
+    class MyForm(forms.Form):
+        even_field = forms.IntegerField(validators=[validate_even])
+
+How validators are run
+======================
+
+See the :doc:`form validation </ref/forms/validation>` for more information on
+how validators are run in forms, and :ref:`Validating objects
+<validating-objects>` for how they're run in models. Note that validators will
+not be run automatically when you save a model, but if you are using a
+:class:`~django.forms.ModelForm`, it will run your validators on any fields
+that are included in your form. See the
+:doc:`ModelForm documentation </topics/forms/modelforms>` for information on
+how model validation interacts with forms.
+
+Built-in validators
+===================
+
+The :mod:`django.core.validators` module contains a collection of callable
+validators for use with model and form fields. They're used internally but
+are available for use with your own fields, too. They can be used in addition
+to, or in lieu of custom ``field.clean()`` methods.
+
+``RegexValidator``
+------------------
+.. class:: RegexValidator(regex, [message=None, code=None])
+
+    .. attribute:: regex
+
+        The regular expression pattern to search for the provided ``value``,
+        or a pre-compiled regular expression. Raises a
+        :exc:`~django.core.exceptions.ValidationError` with :attr:`.message`
+        and :attr:`.code` if no match is found.
+
+    .. attribute:: message
+
+        The error message used by :exc:`~django.core.exceptions.ValidationError`
+        if validation fails. If no :attr:`.message` is specified, a generic
+        ``"Enter a valid value"`` message is used. Default value: ``None``.
+
+    .. attribute:: code
+
+        The error code used by :exc:`~django.core.exceptions.ValidationError`
+        if validation fails. If :attr:`.code` is not specified, ``"invalid"``
+        is used. Default value: ``None``.
+
+``URLValidator``
+----------------
+.. class:: URLValidator([verify_exists=False, validator_user_agent=URL_VALIDATOR_USER_AGENT])
+
+    A :class:`RegexValidator` that ensures a value looks like a URL and
+    optionally verifies that the URL actually exists (i.e., doesn't return a
+    404 status code). Raises an error code of ``'invalid'`` if it doesn't look
+    like a URL, and a code of ``'invalid_link'`` if it doesn't exist.
+
+    .. attribute:: verify_exists
+
+        Default value: ``False``. If set to ``True``, this validator checks
+        that the URL actually exists.
+
+    .. attribute:: validator_user_agent
+
+        If :attr:`.verify_exists` is ``True``, Django uses the value of
+        :attr:`.validator_user_agent` as the "User-agent" for the request. This
+        defaults to :setting:`settings.URL_VALIDATOR_USER_AGENT <URL_VALIDATOR_USER_AGENT>`.
+
+``validate_email``
+------------------
+.. data:: validate_email
+
+    A :class:`RegexValidator` instance that ensures a value looks like an
+    e-mail address.
+
+``validate_slug``
+-----------------
+.. data:: validate_slug
+
+    A :class:`RegexValidator` instance that ensures a value consists of only
+    letters, numbers, underscores or hyphens.
+
+``validate_ipv4_address``
+-------------------------
+.. data:: validate_ipv4_address
+
+    A :class:`RegexValidator` instance that ensures a value looks like an IPv4
+    address.
+
+``validate_comma_separated_integer_list``
+-----------------------------------------
+.. data:: validate_comma_separated_integer_list
+
+    A :class:`RegexValidator` instance that ensures a value is a
+    comma-separated list of integers.
+
+``MaxValueValidator``
+---------------------
+.. class:: MaxValueValidator(max_value)
+
+    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
+    ``'max_value'`` if ``value`` is greater than ``max_value``.
+
+``MinValueValidator``
+---------------------
+.. class:: MinValueValidator(min_value)
+
+    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
+    ``'min_value'`` if ``value`` is less than ``min_value``.
+
+``MaxLengthValidator``
+----------------------
+.. class:: MaxLengthValidator(max_length)
+
+    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
+    ``'max_length'`` if the length of ``value`` is greater than ``max_length``.
+
+``MinLengthValidator``
+----------------------
+.. class:: MinLengthValidator(min_length)
+
+    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
+    ``'min_length'`` if the length of ``value`` is less than ``min_length``.