# フォームモデル { #form-models } FastAPI では、フォームフィールドを宣言するために **Pydantic モデル**を使用できます。 /// info | 情報 フォームを使うには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。 まず [仮想環境](../virtual-environments.md) を作成して有効化し、そのうえでインストールしてください。例えば: ```console $ pip install python-multipart ``` /// /// note | 備考 これは FastAPI バージョン `0.113.0` 以降でサポートされています。🤓 /// ## フォーム用の Pydantic モデル { #pydantic-models-for-forms } 受け取りたいフィールドを **フォームフィールド** として持つ **Pydantic モデル** を宣言し、パラメータを `Form` として宣言するだけです: {* ../../docs_src/request_form_models/tutorial001_an_py310.py hl[9:11,15] *} **FastAPI** はリクエストの **フォームデータ** から **各フィールド** のデータを **抽出** し、定義した Pydantic モデルとして渡します。 ## ドキュメントで確認 { #check-the-docs } `/docs` のドキュメント UI で確認できます:
## 追加のフォームフィールドを禁止 { #forbid-extra-form-fields } 一部の特殊なユースケース(おそらくあまり一般的ではありません)では、フォームフィールドを Pydantic モデルで宣言したもののみに**制限**し、**追加**のフィールドを**禁止**したい場合があります。 /// note | 備考 これは FastAPI バージョン `0.114.0` 以降でサポートされています。🤓 /// Pydantic のモデル設定で、`extra` フィールドを `forbid` にできます: {* ../../docs_src/request_form_models/tutorial002_an_py310.py hl[12] *} クライアントが余分なデータを送信しようとすると、**エラー**のレスポンスを受け取ります。 例えば、クライアントが次のフォームフィールドを送ろうとした場合: - `username`: `Rick` - `password`: `Portal Gun` - `extra`: `Mr. Poopybutthole` フィールド `extra` は許可されていない旨のエラーレスポンスが返されます: ```json { "detail": [ { "type": "extra_forbidden", "loc": ["body", "extra"], "msg": "Extra inputs are not permitted", "input": "Mr. Poopybutthole" } ] } ``` ## まとめ { #summary } FastAPI でフォームフィールドを宣言するために Pydantic モデルを使用できます。😎