--- /dev/null
+# ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
+
+Π ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ ΠΎΠ±ΡΡΠ½ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
+
+ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ:
+
+* **ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°** Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ.
+* **ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π°** Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ.
+* **ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
**, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Ρ
ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ.
+
+!!! danger "ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅"
+ ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ
ΡΠ°Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΡΠ΅Π³Π΄Π° Ρ
ΡΠ°Π½ΠΈΡΠ΅ "Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Ρ
ΡΡ", ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π·Π°ΡΠ΅ΠΌ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ.
+
+ ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΏΡΠΎ "Ρ
ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ" Π² [Π³Π»Π°Π²Π°Ρ
ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ](security/simple-oauth2.md#password-hashing){.internal-link target=_blank}.
+
+## ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
+
+ΠΠΈΠΆΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠ³ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="7 9 14 20 22 27-28 31-33 38-39"
+ {!> ../../../docs_src/extra_models/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="9 11 16 22 24 29-30 33-35 40-41"
+ {!> ../../../docs_src/extra_models/tutorial001.py!}
+ ```
+
+### ΠΡΠΎ `**user_in.dict()`
+
+#### `.dict()` ΠΈΠ· Pydantic
+
+`user_in` - ΡΡΠΎ Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠ»Π°ΡΡΠ° `UserIn`.
+
+Π£ Pydantic-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ `.dict()`, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ `dict` Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
+
+ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Pydantic-ΠΎΠ±ΡΠ΅ΠΊΡ `user_in` ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
+
+```Python
+user_in = UserIn(username="john", password="secret", email="john.doe@example.com")
+```
+
+ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ:
+
+```Python
+user_dict = user_in.dict()
+```
+
+ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ `dict` Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ `user_dict` (ΡΡΠΎ `dict` Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Pydantic-ΠΌΠΎΠ΄Π΅Π»ΠΈ).
+
+Π Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ:
+
+```Python
+print(user_dict)
+```
+
+ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ `dict` Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
+
+```Python
+{
+ 'username': 'john',
+ 'password': 'secret',
+ 'email': 'john.doe@example.com',
+ 'full_name': None,
+}
+```
+
+#### Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° `dict`
+
+ΠΡΠ»ΠΈ ΠΌΡ Π²ΠΎΠ·ΡΠΌΡΠΌ `dict` Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ `user_dict` ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ (ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ `**user_dict`, Python ΡΠ°ΡΠΏΠ°ΠΊΡΠ΅Ρ Π΅Π³ΠΎ. ΠΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ `user_dict` Π½Π°ΠΏΡΡΠΌΡΡ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
+
+ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Ρ `user_dict`, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
+
+```Python
+UserInDB(**user_dict)
+```
+
+ΠΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
+
+```Python
+UserInDB(
+ username="john",
+ password="secret",
+ email="john.doe@example.com",
+ full_name=None,
+)
+```
+
+ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΌΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ `user_dict` Ρ Π»ΡΠ±ΡΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ, ΡΠΎ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
+
+```Python
+UserInDB(
+ username = user_dict["username"],
+ password = user_dict["password"],
+ email = user_dict["email"],
+ full_name = user_dict["full_name"],
+)
+```
+
+#### Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠ· ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
+
+ΠΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ `user_dict` ΠΈΠ· `user_in.dict()`, ΡΡΠΎΡ ΠΊΠΎΠ΄:
+
+```Python
+user_dict = user_in.dict()
+UserInDB(**user_dict)
+```
+
+Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ ΡΠ°ΠΊΠΎΠΌΡ:
+
+```Python
+UserInDB(**user_in.dict())
+```
+
+...ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ `user_in.dict()` - ΡΡΠΎ `dict`, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎΠ±Ρ Python Π΅Π³ΠΎ "ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π»", ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΅Π³ΠΎ Π² `UserInDB` ΠΈ ΡΡΠ°Π²ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ `**`.
+
+Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Pydantic-ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Pydantic-ΠΌΠΎΠ΄Π΅Π»ΠΈ.
+
+#### Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° `dict` ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
+
+Π Π·Π°ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ `hashed_password=hashed_password` ΠΊΠ°ΠΊ Π·Π΄Π΅ΡΡ:
+
+```Python
+UserInDB(**user_in.dict(), hashed_password=hashed_password)
+```
+
+... ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:
+
+```Python
+UserInDB(
+ username = user_dict["username"],
+ password = user_dict["password"],
+ email = user_dict["email"],
+ full_name = user_dict["full_name"],
+ hashed_password = hashed_password,
+)
+```
+
+!!! warning "ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅"
+ Π¦Π΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ
Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ - Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π½Π°ΡΡΠΎΡΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
+
+## Π‘ΠΎΠΊΡΠ°ΡΠΈΡΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
+
+Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° - ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ
ΠΈΠ΄Π΅ΠΉ **FastAPI**.
+
+ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠΈΡΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π³ΠΎΠ², ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄Π΅ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° (ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π½ΠΎ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ), ΠΈ Ρ.Π΄.
+
+Π Π²ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
ΠΈ Π΄ΡΠ±Π»ΠΈΡΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΡΠΈΠΏΠΎΠ².
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎ ΡΠ»ΡΡΡΠΈΡΡ.
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ `UserBase`, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ ΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π΅Ρ Π°ΡΡΠΈΠ±ΡΡΡ (ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΠΈ Ρ.ΠΏ.).
+
+ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΈ Ρ.ΠΏ. Π±ΡΠ΄ΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
+
+Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ (Ρ `password` Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ `hashed_password` ΠΈ Π±Π΅Π· ΠΏΠ°ΡΠΎΠ»Ρ):
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="7 13-14 17-18 21-22"
+ {!> ../../../docs_src/extra_models/tutorial002_py310.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="9 15-16 19-20 23-24"
+ {!> ../../../docs_src/extra_models/tutorial002.py!}
+ ```
+
+## `Union` ΠΈΠ»ΠΈ `anyOf`
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠ²Π΅Ρ ΠΊΠ°ΠΊ `Union` ΠΈΠ· Π΄Π²ΡΡ
ΡΠΈΠΏΠΎΠ². ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π½ΠΈΡ
.
+
+ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ Π² OpenAPI ΠΊΠ°ΠΊ `anyOf`.
+
+ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π² Python <a href="https://docs.python.org/3/library/typing.html#typing.Union" class="external-link" target="_blank">`typing.Union`</a>:
+
+!!! note "ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅"
+ ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ <a href="https://pydantic-docs.helpmanual.io/usage/types/#unions" class="external-link" target="_blank">`Union`</a>, ΡΠ½Π°ΡΠ°Π»Π° ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π·Π°ΡΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠ΅. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ `PlaneItem` ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ `CarItem` Π² `Union[PlaneItem, CarItem]`.
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="1 14-15 18-20 33"
+ {!> ../../../docs_src/extra_models/tutorial003_py310.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="1 14-15 18-20 33"
+ {!> ../../../docs_src/extra_models/tutorial003.py!}
+ ```
+
+### `Union` Π² Python 3.10
+
+Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ `Union[PlaneItem, CarItem]` Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° `response_model`.
+
+ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ **Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°** Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² **Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΈΠΏΠ°**, Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Union` Π΄Π°ΠΆΠ΅ Π² Python 3.10.
+
+ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠ°, ΡΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
+
+```Python
+some_variable: PlaneItem | CarItem
+```
+
+ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² `response_model=PlaneItem | CarItem` ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Python ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ **Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ** ΠΌΠ΅ΠΆΠ΄Ρ `PlaneItem` ΠΈ `CarItem` Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΈΠΏΠ°.
+
+## Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
+
+Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΡΠ²Π΅ΡΡ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
+
+ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `typing.List` ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Python (ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ `list` Π² Python 3.9 ΠΈ Π²ΡΡΠ΅):
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="18"
+ {!> ../../../docs_src/extra_models/tutorial004_py39.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="1 20"
+ {!> ../../../docs_src/extra_models/tutorial004.py!}
+ ```
+
+## ΠΡΠ²Π΅Ρ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ `dict`
+
+ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠ²Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΎΠ΄Π½ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ `dict` ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Pydantic-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
+
+ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΡΠ°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ
Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ/Π°ΡΡΠΈΠ±ΡΡΠΎΠ² (ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π½ΡΠΆΠ½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Pydantic-ΠΌΠΎΠ΄Π΅Π»ΠΈ).
+
+Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `typing.Dict` (ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ `dict` Π² Python 3.9 ΠΈ Π²ΡΡΠ΅):
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="6"
+ {!> ../../../docs_src/extra_models/tutorial005_py39.py!}
+ ```
+
+=== "Python 3.6+"
+
+ ```Python hl_lines="1 8"
+ {!> ../../../docs_src/extra_models/tutorial005.py!}
+ ```
+
+## Π Π΅Π·ΡΠΌΠ΅
+
+ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Pydantic-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
.
+
+ΠΠ°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠ° ΡΡΡΠ½ΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡ Π² ΡΠ°Π·Π½ΡΡ
"ΡΠΎΡΡΠΎΡΠ½ΠΈΡΡ
". ΠΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ "ΡΡΡΠ½ΠΎΡΡΡΡ" ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ `password`, `password_hash` ΠΈ Π±Π΅Π· ΠΏΠ°ΡΠΎΠ»Ρ.