Validadores de escritura

Un validador es un invocable que toma un valor y aumenta un ValidationError si no cumple con algunos criterios. Los validadores pueden resultar útiles para reutilizar la lógica de validación entre diferentes tipos de campos.

Por ejemplo, aquí hay un validador que solo permite números pares:

from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _

defvalidate_even(value):if value %2!=0:raise ValidationError(
            _('%(value)s is not an even number'),
            params='value': value,)

Puede agregar esto a un campo de modelo a través del campo validators argumento:

from django.db import models

classMyModel(models.Model):
    even_field = models.IntegerField(validators=[validate_even])

Debido a que los valores se convierten a Python antes de que se ejecuten los validadores, incluso puede usar el mismo validador con formularios:

from django import forms

classMyForm(forms.Form):
    even_field = forms.IntegerField(validators=[validate_even])

También puede utilizar una clase con un __call__() método para validadores más complejos o configurables. RegexValidator, por ejemplo, utiliza esta técnica. Si se utiliza un validador basado en clases en el validators opción de campo de modelo, debe asegurarse de que sea serializable por el marco de migración añadiendo deconstruir () y __eq__() métodos.

Cómo se ejecutan los validadores

Ver el validación de formulario para obtener más información sobre cómo se ejecutan los validadores en formularios, y Validando objetos por cómo se ejecutan en modelos. Tenga en cuenta que los validadores no se ejecutarán automáticamente cuando guarde un modelo, pero si está utilizando un ModelForm, ejecutará sus validadores en cualquier campo que esté incluido en su formulario. Ver el Documentación de ModelForm para obtener información sobre cómo la validación del modelo interactúa con los formularios.

Validadores incorporados

los django.core.validators El módulo contiene una colección de validadores invocables para usar con campos de formulario y modelo. Se usan internamente, pero también están disponibles para usar con sus propios campos. Se pueden utilizar además de, o en lugar de la costumbre field.clean() métodos.

RegexValidator

class RegexValidator(regex=None, message=None, code=None, inverse_match=None, flags=0)
Parámetros:
  • regex – Que no None, anula regex. Puede ser una expresión regular string o una expresión regular precompilada.
  • mensaje – Que no None, anula message.
  • código – Que no None, anula code.
  • inverse_match – Que no None, anula inverse_match.
  • banderas – Que no None, anula flags. En ese caso, regex debe ser una expresión regular string, o TypeError es elevado.

A RegexValidator busca el proporcionado value para una expresión regular dada con re.search(). Por defecto, genera un ValidationError con message y code si un partido no es fundar. Su comportamiento se puede invertir configurando inverse_match para True, en cuyo caso el ValidationError se levanta cuando un partido es fundar.

regex

El patrón de expresión regular que se debe buscar en el value, utilizando re.search(). Esto puede ser un string o una expresión regular precompilada creada con re.compile(). Predeterminado al vacío string, que se encontrará en todos los posibles value.

message

El mensaje de error utilizado por ValidationError si la validación falla. Predeterminado a "Enter a valid value".

code

El código de error utilizado por ValidationError si la validación falla. Predeterminado a "invalid".

inverse_match

El modo de partido para regex. Predeterminado a False.

flags

los banderas de expresiones regulares utilizado al compilar la expresión regular string regex. Si regex es una expresión regular precompilada y flags está anulado, TypeError es elevado. Predeterminado a 0.

EmailValidator

class EmailValidator(message=None, code=None, allowlist=None)
Parámetros:
  • mensaje – Que no None, anula message.
  • código – Que no None, anula code.
  • lista de permitidos – Que no None, anula allowlist.
message

El mensaje de error utilizado por ValidationError si la validación falla. Predeterminado a "Enter a valid email address".

code

El código de error utilizado por ValidationError si la validación falla. Predeterminado a "invalid".

allowlist

Lista de permitidos de dominios de correo electrónico. De forma predeterminada, una expresión regular (la domain_regex attribute) se utiliza para validar lo que aparece después de la @ firmar. Sin embargo, si eso string aparece en el allowlist, esta validación se omite. Si no se proporciona, el valor predeterminado allowlist es ['localhost']. Otros dominios que no contienen un punto no pasarán la validación, por lo que deberá agregarlos al allowlist según sea necesario.

En desuso desde la versión 3.2: los whitelist El parámetro está en desuso. Usar allowlist en lugar de. El indocumentado domain_whitelist attribute es obsoleto. Usar domain_allowlist en lugar de.

URLValidator

class URLValidator(schemes=None, regex=None, message=None, code=None)

A RegexValidator subclase que asegura que un valor se parece a una URL y genera un código de error de 'invalid' si no es así.

Las direcciones de bucle invertido y los espacios IP reservados se consideran válidos. Direcciones IPv6 literales (RFC 3986 # sección-3.2.2) y dominios Unicode son compatibles.

Además de los argumentos opcionales de su padre RegexValidator clase, URLValidator acepta un extra opcional attribute:

schemes

Lista de esquemas de URL / URI para validar. Si no se proporciona, la lista predeterminada es ['http', 'https', 'ftp', 'ftps']. Como referencia, el sitio web de la IANA proporciona una lista completa de esquemas de URI válidos.

validate_email

validate_email

Un EmailValidator instancia sin ninguna personalización.

validate_slug

validate_slug

A RegexValidator instancia que asegura que un valor consta solo de letras, números, guiones bajos o guiones.

validate_unicode_slug

validate_unicode_slug

A RegexValidator instancia que garantiza que un valor consta solo de letras, números, guiones bajos o guiones Unicode.

validate_ipv4_address

validate_ipv4_address

A RegexValidator instancia que garantiza que un valor se parezca a una dirección IPv4.

validate_ipv6_address

validate_ipv6_address

Usos django.utils.ipv6 para comprobar la validez de una dirección IPv6.

validate_ipv46_address

validate_ipv46_address

Usa ambos validate_ipv4_address y validate_ipv6_address para asegurarse de que un valor sea una dirección IPv4 o IPv6 válida.

validate_comma_separated_integer_list

validate_comma_separated_integer_list

A RegexValidator instancia que asegura que un valor es una lista de enteros separados por comas.

int_list_validator

int_list_validator(sep=', ', message=None, code='invalid', allow_negative=False)

Devuelve un RegexValidator instancia que asegura una string consta de enteros separados por sep. Permite enteros negativos cuando allow_negative es True.

MaxValueValidator

class MaxValueValidator(limit_value, message=None)

Plantea un ValidationError con un código de 'max_value' si value es mayor que limit_value, que puede ser invocable.

MinValueValidator

class MinValueValidator(limit_value, message=None)

Plantea un ValidationError con un código de 'min_value' si value es menos que limit_value, que puede ser invocable.

MaxLengthValidator

class MaxLengthValidator(limit_value, message=None)

Plantea un ValidationError con un código de 'max_length' si la longitud de value es mayor que limit_value, que puede ser invocable.

MinLengthValidator

class MinLengthValidator(limit_value, message=None)

Plantea un ValidationError con un código de 'min_length' si la longitud de value es menos que limit_value, que puede ser invocable.

DecimalValidator

class DecimalValidator(max_digits, decimal_places)

Eleva ValidationError con los siguientes códigos:

  • 'max_digits' si el número de dígitos es mayor que max_digits.
  • 'max_decimal_places' si el número de decimales es mayor que decimal_places.
  • 'max_whole_digits' si el número de dígitos enteros es mayor que la diferencia entre max_digits y decimal_places.

FileExtensionValidator

class FileExtensionValidator(allowed_extensions, message, code)

Plantea un ValidationError con un código de 'invalid_extension' si la extensión de value.name (value es un File) no se encuentra en allowed_extensions. La extensión se compara sin distinción entre mayúsculas y minúsculas con allowed_extensions.

Advertencia

No confíe en la validación de la extensión del archivo para determinar el tipo de archivo. Se puede cambiar el nombre de los archivos para que tengan cualquier extensión, independientemente de los datos que contengan.

validate_image_file_extension

validate_image_file_extension

Utiliza Pillow para asegurar que value.name (value es un File) tiene una extensión de imagen válida.

ProhibitNullCharactersValidator

class ProhibitNullCharactersValidator(message=None, code=None)

Plantea un ValidationError si str(value) contiene uno o más caracteres nulos ('x00').

Parámetros:
  • mensaje – Que no None, anula message.
  • código – Que no None, anula code.
message

El mensaje de error utilizado por ValidationError si la validación falla. Predeterminado a "Null characters are not allowed.".

code

El código de error utilizado por ValidationError si la validación falla. Predeterminado a "null_characters_not_allowed".