ValidateursLien vers cette rubrique

Écriture de validateursLien vers cette rubrique

Un validateur est un exécutable acceptant une valeur et générant ValidationError si celle-ci ne répond pas à certains critères. Les validateurs peuvent être utiles pour réutiliser la logique de validation entre différents types de champs.

Par exemple, voici un validateur qui n’autorise que les nombres pairs :

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


def validate_even(value):
    if value % 2 != 0:
        raise ValidationError(
            _("%(value)s is not an even number"),
            params={"value": value},
        )

Vous pouvez l’ajouter à un champ de modèle via le paramètre validators du champ :

Code
from django.db import models


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

Comme les valeurs sont converties en Python avant que les validateurs ne soient exécutés, vous pouvez même utiliser les mêmes validateurs avec les formulaires :

Code
from django import forms


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

Vous pouvez aussi utiliser une classe avec une méthode __call__() pour des validateurs plus complexes ou configurables. Par exemple, RegexValidator utilise cette technique. Si un validateur basé sur une classe est utilisé dans l’option de champ de modèle validators, vérifiez qu’il puisse être sérialisé par le système des migrations en lui ajoutant les méthodes deconstruct() et __eq__().

Exécution des validateursLien vers cette rubrique

Consultez la validation des formulaires pour plus d’informations sur la manière dont les validateurs sont exécutés dans les formulaires, et validation d’objets sur leur manière d’être exécutés pour les modèles. Notez que les validateurs ne sont pas exécutés automatiquement lorsque vous enregistrez un modèle, mais si vous utilisez un formulaire ModelForm, celui-ci applique les validateurs sur tous les champs inclus dans le formulaire. Consultez la documentation des ModelForm pour plus d’informations sur la manière dont la validation des modèles interagit avec les formulaires.

Validateurs intégrésLien vers cette rubrique

Le module django.core.validators contient une collection de validateurs exécutables à destination des champs de modèles et de formulaires. Ils sont utilisés en interne mais sont aussi à disposition pour vos propres champs. Ils peuvent être employés en plus ou à la place de méthodes field.clean() personnalisées.

RegexValidatorLien vers cette rubrique

class RegexValidator(regex=None, message=None, code=None, inverse_match=None, flags=0)Lien vers cette définition
Paramètres:
  • regex – Si différent de None, surcharge regex. Cela peut être une chaîne d’expression régulière ou une expression régulière précompilée.

  • message – Si différent de None, surcharge message.

  • code – Si différent de None, surcharge code.

  • inverse_match – Si différent de None, surcharge inverse_match.

  • flags – Si différent de None, surcharge flags. Dans ce cas, regex doit être une chaîne d’expression régulière sous peine de générer une exception TypeError.

Un validateur RegexValidator recherche dans la valeur value fournie avec l’expression régulière indiquée au moyen de re.search(). Par défaut, génère une exception ValidationError avec message et code quand aucune correspondance n’est trouvée. Son comportement peut être inversé en définissant inverse_match à True, auquel cas une erreur ValidationError est générée dans le cas où une correspondance est trouvée.

regexLien vers cette définition

Le motif d’expression régulière à utiliser pour chercher dans la valeur value fournie, utilisant re.search(). Ce peut être une chaîne ou une expression régulière précompilée créée avec re.compile(). Contient par défaut la chaîne vide qui sera trouvée dans n’importe quelle valeur possible de value.

messageLien vers cette définition

Le message d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "Saisissez une valeur valide".

codeLien vers cette définition

Le code d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "invalid".

inverse_matchLien vers cette définition

Le mode de correspondance pour regex. Sa valeur par défaut est False.

flagsLien vers cette définition

Les drapeaux regex utilisés lors de la compilation de la chaîne d’expression régulière regex. Si regex est une expression régulière précompilée et que flags est défini, une exception TypeError est générée. La valeur par défaut est 0.

EmailValidatorLien vers cette rubrique

class EmailValidator(message=None, code=None, allowlist=None)Lien vers cette définition
Paramètres:
  • message – Si différent de None, surcharge message.

  • code – Si différent de None, surcharge code.

  • allowlist – Si différent de None, surcharge allowlist.

La classe EmailValidator assure qu’une valeur correspond syntaxiquement à une adresse de courriel, et, dans le cas contraire, génère une exception ValidationError avec message et code. Les valeurs plus longues que 320 caractères sont toujours considérées comme non valides.

messageLien vers cette définition

Le message d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "Saisissez une adresse de courriel valide".

codeLien vers cette définition

Le code d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "invalid".

allowlistLien vers cette définition

Liste autorisée de domaines de messagerie. Par défaut, une expression régulière (l’attribut domain_regex) est utilisée pour valider tout ce qui apparaît après le signe @. Cependant, si cette chaîne apparaît dans la liste allowlist, cette validation est ignorée. Si ce paramètre n’est pas indiqué, sa valeur par défaut est ['localhost']. D’autres domaines qui ne contiennent pas de point ne passeront pas la validation, il est donc nécessaire de les ajouter à la liste autorisée allowlist s’ils sont valides selon vous.

DomainNameValidatorLien vers cette rubrique

class DomainNameValidator(accept_idna=True, message=None, code=None)Lien vers cette définition

Une sous-classe de RegexValidator s’assurant qu’une valeur ressemble à un nom de domaine. Les valeurs plus longues que 255 ne sont jamais considérées comme valides. Les adresse IP ne sont pas acceptées comme des noms de domaine valides.

En plus des paramètres facultatifs de sa classe parente RegexValidator, DomainNameValidator accepte un attribut facultatif supplémentaire :

accept_idnaLien vers cette définition

Détermine s’il faut accepter les noms de domaine internationalisés, c’est-à-dire les noms de domaine qui contiennent des caractères non ASCII. La valeur par défaut est True.

URLValidatorLien vers cette rubrique

class URLValidator(schemes=None, regex=None, message=None, code=None)Lien vers cette définition

Une sous-classe de RegexValidator s’assurant qu’une valeur réponde aux critères d’une URL, et générant un code d’erreur 'invalid' dans le cas contraire. Les valeurs plus longues que max_length caractères sont toujours considérées comme non valides.

Les adresses de type « loopback » (boucle locale) et les espaces IP réservés sont considérés comme valides. Les adresses IPv6 littérales (RFC 3986 Section 3.2.2) et les domaines Unicode sont tous deux pris en charge.

En plus des paramètres facultatifs de sa classe parente RegexValidator, URLValidator accepte un attribut facultatif supplémentaire :

schemesLien vers cette définition

Liste de protocoles URL/URI à valider. Lorsque ce paramètre est omis, la liste par défaut est ['http', 'https', 'ftp', 'ftps']. Le site web de la IANA fournit comme référence la liste complète des protocoles d’URI valides.

max_lengthLien vers cette définition

La longueur maximale des valeurs pouvant être considérées comme valides. Contient 2048 caractères par défaut.

validate_emailLien vers cette rubrique

validate_emailLien vers cette définition

Une instance EmailValidator sans aucune personnalisation.

validate_domain_nameLien vers cette rubrique

validate_domain_nameLien vers cette définition

Une instance DomainNameValidator sans aucune personnalisation.

validate_slugLien vers cette rubrique

validate_slugLien vers cette définition

Une instance de RegexValidator s’assurant qu’une valeur ne soit composée que de lettres, de chiffres, de soulignements ou de tirets.

validate_unicode_slugLien vers cette rubrique

validate_unicode_slugLien vers cette définition

Une instance de RegexValidator s’assurant qu’une valeur ne soit composée que de lettres Unicode, de chiffres, de soulignements ou de tirets.

validate_ipv4_addressLien vers cette rubrique

validate_ipv4_addressLien vers cette définition

Une instance de RegexValidator s’assurant qu’une valeur réponde aux critères d’une adresse IPv4.

validate_ipv6_addressLien vers cette rubrique

validate_ipv6_addressLien vers cette définition

Utilise django.utils.ipv6 pour vérifier la validité d’une adresse IPv6.

validate_ipv46_addressLien vers cette rubrique

validate_ipv46_addressLien vers cette définition

Utilise à la fois validate_ipv4_address et validate_ipv6_address pour s’assurer qu’une valeur soit une adresse IPv4 ou IPv6 valide.

validate_comma_separated_integer_listLien vers cette rubrique

validate_comma_separated_integer_listLien vers cette définition

Une instance de RegexValidator s’assurant qu’une valeur contienne une liste de nombres entiers séparés par des virgules.

int_list_validatorLien vers cette rubrique

int_list_validator(sep=',', message=None, code='invalid', allow_negative=False)Lien vers cette définition

Renvoie une instance de RegexValidator s’assurant qu’une chaîne ne contienne que des nombres entiers séparés par sep. Les entiers négatifs sont autorisés lorsque allow_negative vaut True.

MaxValueValidatorLien vers cette rubrique

class MaxValueValidator(limit_value, message=None)Lien vers cette définition

Génère une exception ValidationError avec le code 'max_value' si la valeur value est plus grande que limit_value, qui peut être exécutable.

MinValueValidatorLien vers cette rubrique

class MinValueValidator(limit_value, message=None)Lien vers cette définition

Génère une exception ValidationError avec le code 'min_value' si la valeur value est plus petite que limit_value, qui peut être exécutable.

MaxLengthValidatorLien vers cette rubrique

class MaxLengthValidator(limit_value, message=None)Lien vers cette définition

Génère une exception ValidationError avec le code 'max_length' si la longueur de la valeur value est plus grande que limit_value, qui peut être exécutable.

MinLengthValidatorLien vers cette rubrique

class MinLengthValidator(limit_value, message=None)Lien vers cette définition

Génère une exception ValidationError avec le code 'min_length' si la longueur de la valeur value est plus petite que limit_value, qui peut être exécutable.

DecimalValidatorLien vers cette rubrique

class DecimalValidator(max_digits, decimal_places)Lien vers cette définition

Génère une exception ValidationError avec les codes suivants :

  • 'max_digits' si le nombre de chiffres est plus grand que max_digits.

  • 'max_decimal_places' si le nombre de chiffres après la virgule est plus grand que decimal_places.

  • 'max_whole_digits' si le nombre de chiffres de la partie entière est plus grand que la différence entre max_digits et decimal_places.

FileExtensionValidatorLien vers cette rubrique

class FileExtensionValidator(allowed_extensions, message, code)Lien vers cette définition

Génère une exception ValidationError avec le code 'invalid_extension' si l’extension de value.name (value étant un objet File) ne se trouve pas dans allowed_extensions. La comparaison d’extension avec allowed_extensions est insensible à la casse.

validate_image_file_extensionLien vers cette rubrique

validate_image_file_extensionLien vers cette définition

Utilise Pillow pour s’assurer que value.name (value étant un objet File) est une extension d’image valide.

ProhibitNullCharactersValidatorLien vers cette rubrique

class ProhibitNullCharactersValidator(message=None, code=None)Lien vers cette définition

Génère une exception ValidationError si str(value) contient un ou plusieurs caractères nuls ('\x00').

Paramètres:
  • message – Si différent de None, surcharge message.

  • code – Si différent de None, surcharge code.

messageLien vers cette définition

Le message d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "Les caractères nuls ne sont pas autorisés".

codeLien vers cette définition

Le code d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "null_characters_not_allowed".

StepValueValidatorLien vers cette rubrique

class StepValueValidator(limit_value, message=None, offset=None)Lien vers cette définition

Génère une exception ValidationError ayant le code 'step_size' si value n’est pas un multiple entier de limit_value, qui peut être un nombre à virgule, un entier, une valeur décimale ou un exécutable. Lorsque offset est défini, la validation s’applique à limit_value plus offset. Par exemple, pour StepValueValidator(3, offset=1.4), les valeurs valides comprennent entre autres 1.4, 4.4, 7.4, 10.4.