# Données de formulaire { #form-data } Lorsque vous devez recevoir des champs de formulaire au lieu de JSON, vous pouvez utiliser `Form`. /// info Pour utiliser les formulaires, installez d'abord `python-multipart`. Assurez-vous de créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis d'installer ce paquet, par exemple : ```console $ pip install python-multipart ``` /// ## Importer `Form` { #import-form } Importez `Form` depuis `fastapi` : {* ../../docs_src/request_forms/tutorial001_an_py310.py hl[3] *} ## Définir les paramètres `Form` { #define-form-parameters } Créez des paramètres de formulaire comme vous le feriez pour `Body` ou `Query` : {* ../../docs_src/request_forms/tutorial001_an_py310.py hl[9] *} Par exemple, dans l'une des manières dont la spécification OAuth2 peut être utilisée (appelée « password flow »), il est requis d'envoyer un `username` et un `password` comme champs de formulaire. La spécification exige que les champs soient exactement nommés `username` et `password`, et qu'ils soient envoyés en tant que champs de formulaire, pas en JSON. Avec `Form`, vous pouvez déclarer les mêmes configurations que pour `Body` (ainsi que `Query`, `Path`, `Cookie`), y compris la validation, des exemples, un alias (p. ex. `user-name` au lieu de `username`), etc. /// info `Form` est une classe qui hérite directement de `Body`. /// /// tip | Astuce Pour déclarer des corps de formulaire, vous devez utiliser `Form` explicitement, car sinon les paramètres seraient interprétés comme des paramètres de requête ou des paramètres de corps (JSON). /// ## À propos des « champs de formulaire » { #about-form-fields } La manière dont les formulaires HTML (`
`) envoient les données au serveur utilise normalement un encodage « spécial » pour ces données, différent de JSON. **FastAPI** s'assure de lire ces données au bon endroit au lieu de JSON. /// note | Détails techniques Les données issues des formulaires sont normalement encodées avec le « type de média » `application/x-www-form-urlencoded`. Mais lorsque le formulaire inclut des fichiers, il est encodé en `multipart/form-data`. Vous lirez la gestion des fichiers dans le chapitre suivant. Si vous voulez en savoir plus sur ces encodages et les champs de formulaire, consultez la MDN web docs pour POST. /// /// warning | Alertes Vous pouvez déclarer plusieurs paramètres `Form` dans un chemin d'accès, mais vous ne pouvez pas aussi déclarer des champs `Body` que vous vous attendez à recevoir en JSON, car la requête aura le corps encodé en `application/x-www-form-urlencoded` au lieu de `application/json`. Ce n'est pas une limitation de **FastAPI**, cela fait partie du protocole HTTP. /// ## Récapitulatif { #recap } Utilisez `Form` pour déclarer les paramètres d'entrée des données de formulaire.