- en
- Langue : fr
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('%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])
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 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, inverse_match=None, flags=0)[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.
- 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.
- regex¶
Le motif d’expression régulière à appliquer à la valeur value fournie, ou une expression régulière précompilée. Par défaut, génère une exception ValidationError avec message et code quand aucune correspondance n’est trouvée. Ce comportement standard 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. 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".
EmailValidator¶
- class EmailValidator(message=None, code=None, whitelist=None)[source]¶
Paramètres: - message¶
Le message d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "Saisissez une adresse de courriel valide".
- code¶
Le code d’erreur utilisé par ValidationError si la validation échoue. La valeur par défaut est "invalid".
- whitelist¶
Liste blanche de domaines de messagerie à autoriser. 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 blanche, 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 blanche s’ils sont valides selon vous.
URLValidator¶
- class URLValidator(schemes=None, regex=None, message=None, code=None)[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.
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 2732) 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 :
- schemes¶
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.
Changed in Django 1.7:L’attribut facultatif schemes a été ajouté.
Changed in Django 1.8:La prise en charge des adresses IPv6, des domaines unicode et des URL contenant des données d’authentification a été ajoutée.
validate_email¶
- validate_email¶
Une instance EmailValidator sans aucune personnalisation.
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_ipv46_address¶
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, message=None)[source]¶
Génère une exception ValidationError avec le code 'max_value' si la valeur value est plus grande que max_value.
Changed in Django 1.8:Le paramètre message a été ajouté.
MinValueValidator¶
- class MinValueValidator(min_value, message=None)[source]¶
Génère une exception ValidationError avec le code 'min_value' si la valeur value est plus petite que min_value.
Changed in Django 1.8:Le paramètre message a été ajouté.
MaxLengthValidator¶
- class MaxLengthValidator(max_length, message=None)[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.
Changed in Django 1.8:Le paramètre message a été ajouté.
MinLengthValidator¶
- class MinLengthValidator(min_length, message=None)[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.
Changed in Django 1.8:Le paramètre message a été ajouté.