--- /dev/null
+# ΠΠΎΠ΄Π΅Π»Ρ ΡΠΎΡΠΌ (Form Models)
+
+Π£ FastAPI ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ **Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ** Π΄Π»Ρ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π½Ρ **ΠΏΠΎΠ»ΡΠ² ΡΠΎΡΠΌΠΈ**.
+
+/// info | ΠΠ½ΡΠΎΡΠΌΠ°ΡΡΡ
+
+Π©ΠΎΠ± Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΠΎΡΠΌΠΈ, ΡΠΏΠΎΡΠ°ΡΠΊΡ Π²ΡΡΠ°Π½ΠΎΠ²ΡΡΡ <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">python-multipart</a>.
+
+ΠΠ΅ΡΠ΅ΠΊΠΎΠ½Π°ΠΉΡΠ΅ΡΡ, ΡΠΎ ΠΠΈ ΡΡΠ²ΠΎΡΠΈΠ»ΠΈ [Π²ΡΡΡΡΠ°Π»ΡΠ½Π΅ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²ΠΈΡΠ΅](../virtual-environments.md){.internal-link target=_blank}, Π°ΠΊΡΠΈΠ²ΡΠ²Π°Π»ΠΈ ΠΉΠΎΠ³ΠΎ, Π° ΠΏΠΎΡΡΠΌ Π²ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄:
+
+```console
+$ pip install python-multipart
+```
+
+///
+
+/// note | ΠΡΠ΄ΠΊΠ°Π·ΠΊΠ°
+
+Π¦Ρ ΡΡΠ½ΠΊΡΡΡ ΠΏΡΠ΄ΡΡΠΈΠΌΡΡΡΡΡΡ, ΠΏΠΎΡΠΈΠ½Π°ΡΡΠΈ Π· FastAPI Π²Π΅ΡΡΡΡ `0.113.0`. π€
+
+///
+
+## ΠΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ Pydantic-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄Π»Ρ ΡΠΎΡΠΌ
+
+ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΎΠ³ΠΎΠ»ΠΎΡΠΈΡΠΈ **Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ** Π· ΠΏΠΎΠ»ΡΠΌΠΈ, ΡΠΊΡ ΠΠΈ Ρ
ΠΎΡΠ΅ΡΠ΅ ΠΎΡΡΠΈΠΌΠ°ΡΠΈ ΡΠΊ **ΠΏΠΎΠ»Ρ ΡΠΎΡΠΌΠΈ**, Π° ΠΏΠΎΡΡΠΌ ΠΎΠ³ΠΎΠ»ΠΎΡΠΈΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΊ `Form`:
+
+{* ../../docs_src/request_form_models/tutorial001_an_py39.py hl[9:11,15] *}
+
+**FastAPI** **Π²ΠΈΡΡΠ³Π½Π΅** Π΄Π°Π½Ρ Π΄Π»Ρ **ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ** Π· **ΡΠΎΡΠΌΠΎΠ²ΠΈΡ
Π΄Π°Π½ΠΈΡ
** Ρ Π·Π°ΠΏΠΈΡΡ ΡΠ° Π½Π°Π΄Π°ΡΡΡ Π²Π°ΠΌ Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΠΊΡ ΠΠΈ Π²ΠΈΠ·Π½Π°ΡΠΈΠ»ΠΈ.
+
+## ΠΠ΅ΡΠ΅Π²ΡΡΠΊΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΡΡ
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΡΡΠΈΡΠΈ ΡΠ΅ Π² UI Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΡΡ Π·Π° `/docs`:
+
+<div class="screenshot">
+<img src="/img/tutorial/request-form-models/image01.png">
+</div>
+
+## ΠΠ°Π±ΠΎΡΠΎΠ½Π° Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΈΡ
ΠΏΠΎΠ»ΡΠ² ΡΠΎΡΠΌΠΈ
+
+Π£ Π΄Π΅ΡΠΊΠΈΡ
ΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΈΡ
Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ
(ΠΉΠΌΠΎΠ²ΡΡΠ½ΠΎ, ΡΡΠ΄ΠΊΠΎ) ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ **ΠΎΠ±ΠΌΠ΅ΠΆΠΈΡΠΈ** ΡΠΎΡΠΌΡ Π»ΠΈΡΠ΅ ΡΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, ΡΠΊΡ Π±ΡΠ»ΠΈ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Ρ Π² Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ, Ρ **Π·Π°Π±ΠΎΡΠΎΠ½ΠΈΡΠΈ** Π±ΡΠ΄Ρ-ΡΠΊΡ **Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²Ρ** ΠΏΠΎΠ»Ρ.
+
+/// note | ΠΡΠ΄ΠΊΠ°Π·ΠΊΠ°
+
+Π¦Ρ ΡΡΠ½ΠΊΡΡΡ ΠΏΡΠ΄ΡΡΠΈΠΌΡΡΡΡΡΡ, ΠΏΠΎΡΠΈΠ½Π°ΡΡΠΈ Π· FastAPI Π²Π΅ΡΡΡΡ `0.114.0`. π€
+
+///
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΡΠ³ΡΡΠ°ΡΡΡ Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΠΎΠ± Π·Π°Π±ΠΎΡΠΎΠ½ΠΈΡΠΈ `forbid` Π±ΡΠ΄Ρ-ΡΠΊΡ Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²Ρ `extra` ΠΏΠΎΠ»Ρ:
+
+{* ../../docs_src/request_form_models/tutorial002_an_py39.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"
+ }
+ ]
+}
+```
+
+## ΠΡΠ΄ΡΡΠΌΠΎΠΊ
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΠΎΠ³ΠΎΠ»ΠΎΡΠ΅Π½Π½Ρ ΠΏΠΎΠ»ΡΠ² ΡΠΎΡΠΌΠΈ Ρ FastAPI. π