mirror of
				https://github.com/django/django.git
				synced 2025-11-03 21:25:09 +00:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@15967 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			158 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
==========
 | 
						|
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
 | 
						|
    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_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``.
 |