validators.txt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. ==========
  2. Validators
  3. ==========
  4. .. module:: django.core.validators
  5. :synopsis: Validation utilities and base classes
  6. Writing validators
  7. ==================
  8. A validator is a callable that takes a value and raises a
  9. :exc:`~django.core.exceptions.ValidationError` if it doesn't meet some
  10. criteria. Validators can be useful for re-using validation logic between
  11. different types of fields.
  12. For example, here's a validator that only allows even numbers::
  13. from django.core.exceptions import ValidationError
  14. def validate_even(value):
  15. if value % 2 != 0:
  16. raise ValidationError(u'%s is not an even number' % value)
  17. You can add this to a model field via the field's :attr:`~django.db.models.Field.validators`
  18. argument::
  19. from django.db import models
  20. class MyModel(models.Model):
  21. even_field = models.IntegerField(validators=[validate_even])
  22. Because values are converted to Python before validators are run, you can even
  23. use the same validator with forms::
  24. from django import forms
  25. class MyForm(forms.Form):
  26. even_field = forms.IntegerField(validators=[validate_even])
  27. How validators are run
  28. ======================
  29. See the :doc:`form validation </ref/forms/validation>` for more information on
  30. how validators are run in forms, and :ref:`Validating objects
  31. <validating-objects>` for how they're run in models. Note that validators will
  32. not be run automatically when you save a model, but if you are using a
  33. :class:`~django.forms.ModelForm`, it will run your validators on any fields
  34. that are included in your form. See the
  35. :doc:`ModelForm documentation </topics/forms/modelforms>` for information on
  36. how model validation interacts with forms.
  37. Built-in validators
  38. ===================
  39. The :mod:`django.core.validators` module contains a collection of callable
  40. validators for use with model and form fields. They're used internally but
  41. are available for use with your own fields, too. They can be used in addition
  42. to, or in lieu of custom ``field.clean()`` methods.
  43. ``RegexValidator``
  44. ------------------
  45. .. class:: RegexValidator([regex=None, message=None, code=None])
  46. :param regex: If not ``None``, overrides :attr:`regex`. Can be a regular
  47. expression string or a pre-compiled regular expression.
  48. :param message: If not ``None``, overrides :attr:`.message`.
  49. :param code: If not ``None``, overrides :attr:`code`.
  50. .. attribute:: regex
  51. The regular expression pattern to search for the provided ``value``,
  52. or a pre-compiled regular expression. Raises a
  53. :exc:`~django.core.exceptions.ValidationError` with :attr:`message`
  54. and :attr:`code` if no match is found. By default, matches any string
  55. (including an empty string).
  56. .. attribute:: message
  57. The error message used by
  58. :exc:`~django.core.exceptions.ValidationError` if validation fails.
  59. Defaults to ``"Enter a valid value"``.
  60. .. attribute:: code
  61. The error code used by :exc:`~django.core.exceptions.ValidationError`
  62. if validation fails. Defaults to ``"invalid"``.
  63. ``URLValidator``
  64. ----------------
  65. .. class:: URLValidator()
  66. A :class:`RegexValidator` that ensures a value looks like a URL, and raises
  67. an error code of ``'invalid'`` if it doesn't.
  68. ``validate_email``
  69. ------------------
  70. .. data:: validate_email
  71. An ``EmailValidator`` instance that ensures a value looks like an
  72. email address.
  73. ``validate_slug``
  74. -----------------
  75. .. data:: validate_slug
  76. A :class:`RegexValidator` instance that ensures a value consists of only
  77. letters, numbers, underscores or hyphens.
  78. ``validate_ipv4_address``
  79. -------------------------
  80. .. data:: validate_ipv4_address
  81. A :class:`RegexValidator` instance that ensures a value looks like an IPv4
  82. address.
  83. ``validate_ipv6_address``
  84. -------------------------
  85. .. data:: validate_ipv6_address
  86. Uses ``django.utils.ipv6`` to check the validity of an IPv6 address.
  87. ``validate_ipv46_address``
  88. --------------------------
  89. .. data:: validate_ipv46_address
  90. Uses both ``validate_ipv4_address`` and ``validate_ipv6_address`` to
  91. ensure a value is either a valid IPv4 or IPv6 address.
  92. ``validate_comma_separated_integer_list``
  93. -----------------------------------------
  94. .. data:: validate_comma_separated_integer_list
  95. A :class:`RegexValidator` instance that ensures a value is a
  96. comma-separated list of integers.
  97. ``MaxValueValidator``
  98. ---------------------
  99. .. class:: MaxValueValidator(max_value)
  100. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
  101. ``'max_value'`` if ``value`` is greater than ``max_value``.
  102. ``MinValueValidator``
  103. ---------------------
  104. .. class:: MinValueValidator(min_value)
  105. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
  106. ``'min_value'`` if ``value`` is less than ``min_value``.
  107. ``MaxLengthValidator``
  108. ----------------------
  109. .. class:: MaxLengthValidator(max_length)
  110. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
  111. ``'max_length'`` if the length of ``value`` is greater than ``max_length``.
  112. ``MinLengthValidator``
  113. ----------------------
  114. .. class:: MinLengthValidator(min_length)
  115. Raises a :exc:`~django.core.exceptions.ValidationError` with a code of
  116. ``'min_length'`` if the length of ``value`` is less than ``min_length``.