mirror of
				https://github.com/django/django.git
				synced 2025-11-04 01:47:52 +03:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@16366 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			184 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
==========
 | 
						|
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=None, message=None, code=None])
 | 
						|
 | 
						|
    :param regex: If not ``None``, overrides :attr:`regex`. Can be a regular
 | 
						|
        expression string or a pre-compiled regular expression.
 | 
						|
    :param message: If not ``None``, overrides :attr:`.message`.
 | 
						|
    :param code: If not ``None``, overrides :attr:`code`.
 | 
						|
 | 
						|
    .. 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. By default, matches any string
 | 
						|
        (including an empty string).
 | 
						|
 | 
						|
    .. attribute:: message
 | 
						|
 | 
						|
        The error message used by
 | 
						|
        :exc:`~django.core.exceptions.ValidationError` if validation fails.
 | 
						|
        Defaults to ``"Enter a valid value"``.
 | 
						|
 | 
						|
    .. attribute:: code
 | 
						|
 | 
						|
        The error code used by :exc:`~django.core.exceptions.ValidationError`
 | 
						|
        if validation fails. Defaults to ``"invalid"``.
 | 
						|
 | 
						|
``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.
 | 
						|
 | 
						|
    :param verify_exists: Sets :attr:`verify_exists`. Defaults to ``False``.
 | 
						|
    :param validator_user_agent: Sets :attr:`validator_user_agent`. Defaults to
 | 
						|
        :setting:`URL_VALIDATOR_USER_AGENT` or, if that setting is set to a
 | 
						|
        null value, ``"Django (http://www.djangoproject.com/)"``.
 | 
						|
 | 
						|
    .. attribute:: verify_exists
 | 
						|
 | 
						|
        If set to ``True``, this validator checks that the URL actually exists.
 | 
						|
 | 
						|
    .. attribute:: validator_user_agent
 | 
						|
 | 
						|
        If :attr:`verify_exists` is ``True``, Django uses this value as the
 | 
						|
        "User-agent" for the request.
 | 
						|
 | 
						|
``validate_email``
 | 
						|
------------------
 | 
						|
.. data:: validate_email
 | 
						|
 | 
						|
    A :class:`RegexValidator` instance that ensures a value looks like an
 | 
						|
    email 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_ipv6_address``
 | 
						|
-------------------------
 | 
						|
.. versionadded:: 1.4
 | 
						|
 | 
						|
.. data:: validate_ipv6_address
 | 
						|
 | 
						|
    Uses :mod:`django.utils.ipv6` to check the validity of an IPv6 address.
 | 
						|
 | 
						|
``validate_ipv46_address``
 | 
						|
--------------------------
 | 
						|
.. versionadded:: 1.4
 | 
						|
 | 
						|
.. data:: validate_ipv46_address
 | 
						|
 | 
						|
    Uses both ``validate_ipv4_address`` and ``validate_ipv6_address`` to
 | 
						|
    ensure a value is either a valid IPv4 or IPv6 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``.
 |