Validateurs

Écriture de validateurs

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 :

from django.core.exceptions import ValidationError

def validate_even(value):
    if value % 2 != 0:
        raise ValidationError(u'%s is not an even number' % value)

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

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 :

from django import forms

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

Exécution des validateurs

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és

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.

RegexValidator

class RegexValidator([regex=None, message=None, code=None])[source]
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.
regex

Le motif d’expression régulière à appliquer à la valeur value fournie, ou une expression régulière précompilée. Génère une exception ValidationError avec message et code si aucune correspondance n’est trouvée. Par défaut, correspond à n’importe quelle chaîne (y compris une chaîne vide).

message

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

code

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

URLValidator

class URLValidator[source]

Un 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.

validate_email

validate_email

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

validate_slug

validate_slug

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

validate_ipv4_address

validate_ipv4_address

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

validate_ipv6_address

validate_ipv6_address[source]

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

validate_ipv46_address

validate_ipv46_address[source]

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_list

validate_comma_separated_integer_list

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

MaxValueValidator

class MaxValueValidator(max_value)[source]

Génère une exception ValidationError avec le code 'max_value' si la valeur value est plus grande que max_value.

MinValueValidator

class MinValueValidator(min_value)[source]

Génère une exception ValidationError avec le code 'min_value' si la valeur value est plus petite que min_value.

MaxLengthValidator

class MaxLengthValidator(max_length)[source]

Génère une exception ValidationError avec le code 'max_length' si la longueur de la valeur value est plus grande que max_length.

MinLengthValidator

class MinLengthValidator(min_length)[source]

Génère une exception ValidationError avec le code 'min_length' si la longueur de la valeur value est plus petite que min_length.