You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

Modèles de formulaire

Vous pouvez utiliser des modèles Pydantic pour déclarer des champs de formulaire dans FastAPI.

/// info

Pour utiliser les formulaires, installez d'abord python-multipart.

Assurez-vous de créer un environnement virtuel, de l'activer, puis d'installer le paquet, par exemple :

$ pip install python-multipart

///

/// note | Remarque

Ceci est pris en charge depuis la version 0.113.0 de FastAPI. 🤓

///

Modèles Pydantic pour les formulaires

Vous avez simplement besoin de déclarer un modèle Pydantic avec les champs que vous souhaitez recevoir comme champs de formulaire, puis de déclarer le paramètre comme Form :

{* ../../docs_src/request_form_models/tutorial001_an_py310.py hl[9:11,15] *}

FastAPI va extraire les données pour chaque champ à partir des données de formulaire de la requête et vous fournir le modèle Pydantic que vous avez défini.

Consulter les documents

Vous pouvez le vérifier dans l'interface des documents à /docs :

Interdire les champs de formulaire supplémentaires

Dans certains cas d'utilisation particuliers (probablement peu courants), vous pourriez vouloir restreindre les champs de formulaire à ceux déclarés dans le modèle Pydantic, et interdire tout champ supplémentaire.

/// note | Remarque

Ceci est pris en charge depuis la version 0.114.0 de FastAPI. 🤓

///

Vous pouvez utiliser la configuration du modèle Pydantic pour forbid tout champ extra :

{* ../../docs_src/request_form_models/tutorial002_an_py310.py hl[12] *}

Si un client tente d'envoyer des données supplémentaires, il recevra une réponse d'erreur.

Par exemple, si le client essaie d'envoyer les champs de formulaire :

  • username: Rick
  • password: Portal Gun
  • extra: Mr. Poopybutthole

Il recevra une réponse d'erreur lui indiquant que le champ extra n'est pas autorisé :

{
    "detail": [
        {
            "type": "extra_forbidden",
            "loc": ["body", "extra"],
            "msg": "Extra inputs are not permitted",
            "input": "Mr. Poopybutthole"
        }
    ]
}

Résumer

Vous pouvez utiliser des modèles Pydantic pour déclarer des champs de formulaire dans FastAPI. 😎