Skip to main content

Introduction

  • Cet article vous guide dans la validation de données avec pydantic, une bibliothèque Python dont le cœur de validation (pydantic-core) est écrit en Rust. Les exemples utilisent pydantic v2.
  • Avant de commencer, assurez-vous d’avoir Python et la bibliothèque pydantic installés dans votre environnement. Consultez la commande d’installation de pydantic ci-dessous.

Créer un modèle

  • Tout d’abord, nous devons importer et faire hériter notre classe de pydantic.BaseModel pour commencer la validation. Dans notre exemple, nous allons créer une classe nommée Person qui aura un nom, un âge et un e-mail.
  • Avec cette classe, lorsque nous l’instancions, pydantic vérifiera que name et email sont des chaînes de caractères et que age est un entier.

Utiliser le modèle

  • Maintenant que nous l’avons créée, nous allons instancier la classe. Nous allons créer un dict contenant les données et le décompacter dans notre classe.
  • L’exemple ci-dessus ne déclenchera aucune erreur puisque tous les champs sont du bon type. Par défaut, pydantic convertit aussi les valeurs compatibles : si age est la chaîne "19", elle devient l’entier 19. Nous allons maintenant fournir des données incorrectes pour confirmer que notre validation fonctionne.
  • L’exemple ci-dessus déclenche une ValidationError car age doit être un entier et "nineteen" ne peut pas être converti en entier :
  • Pour gérer l’erreur au lieu de laisser votre programme s’arrêter, interceptez-la avec try/except. Sa méthode errors() liste chaque champ invalide :

Mode strict

  • Si vous voulez aussi rejeter les chaînes comme "19", activez le mode strict dans le modèle. age n’accepte alors qu’un vrai int, et Person(name="John", age="19", email="john@example.com") déclenche ValidationError.

Créer une dataclass

  • Vous pouvez également créer des dataclasses avec pydantic. Elles sont similaires aux dataclasses standard de Python, mais valident leurs champs comme BaseModel.
  • Si nous envoyons la chaîne "19" à age, elle sera convertie en int 19.
Pydantic prend en charge la validation récursive, ce qui signifie que lors de la validation de modèles imbriqués, il valide également les modèles internes.Si une classe possède une liste de Person, people: list[Person], pydantic vérifie chaque élément de la liste et le convertit en Person.

Extras

  • Pydantic propose quelques extras, comme la validation des e-mails et un paquet de repli pour les fuseaux horaires. Pour les installer, exécutez les commandes suivantes :
  • Vous pouvez installer les deux ensemble en exécutant la commande suivante.
  • pydantic[email] ajoute le type EmailStr, qui valide le format user@domain.tld et normalise l’adresse.

Valider les variables d’environnement au démarrage

  • Les bots et les API lisent leurs tokens et leurs paramètres depuis des variables d’environnement. Avec pydantic-settings, une variable manquante ou invalide arrête l’application au démarrage avec une erreur claire, au lieu d’échouer plus tard en pleine requête.
  • Déclarez les variables dont votre application a besoin dans une classe qui hérite de BaseSettings. Chaque champ lit la variable d’environnement du même nom, sans tenir compte de la casse : discord_token lit DISCORD_TOKEN.
settings.py
  • Si DISCORD_TOKEN n’est pas définie, Settings() déclenche une ValidationError pour discord_token avec le message Field required. Une valeur comme PORT=abc échoue de la même façon, car port doit être un entier.
  • SecretStr masque le token lorsque vous affichez ou journalisez les paramètres. Lisez la vraie valeur avec settings.discord_token.get_secret_value().
  • Sur Square Cloud, définissez les variables dans le tableau de bord ou avec squarecloud app env set, et listez pydantic-settings dans votre requirements.txt. Consultez Variables d’environnement.

Prochaines étapes

Variables d'environnement

Définissez les variables que lit votre classe de paramètres.

FastAPI

Déployez une API qui valide ses requêtes avec pydantic.

Bot Discord

Hébergez un bot qui lit son token depuis l’environnement.

Avez-vous aimé cet article ?

  • Nous avons créé ce contenu avec le plus grand soin afin d’offrir la meilleure aide possible. Si cet article vous a aidé d’une quelconque manière, soutenez notre travail ! Les développeurs ont déjà noté Square Cloud 4,9/5 sur 402 avis sur Google et Trustpilot, laissez le vôtre aussi ! Cela nous aide à comprendre ce qui compte le plus pour vous.

Google Reviews

Laissez votre avis sur Google Reviews.

Trustpilot

Laissez votre avis sur Trustpilot.