# Modèles de formulaire { #form-models }
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`](https://github.com/Kludex/python-multipart).
Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis d'installer le paquet, par exemple :
```console
$ 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 { #pydantic-models-for-forms }
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 { #check-the-docs }
Vous pouvez le vérifier dans l'interface des documents à `/docs` :
## Interdire les champs de formulaire supplémentaires { #forbid-extra-form-fields }
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é :
```json
{
"detail": [
{
"type": "extra_forbidden",
"loc": ["body", "extra"],
"msg": "Extra inputs are not permitted",
"input": "Mr. Poopybutthole"
}
]
}
```
## Résumer { #summary }
Vous pouvez utiliser des modèles Pydantic pour déclarer des champs de formulaire dans FastAPI. 😎