Skip to content

Commit

Permalink
🌐 Add Russian translation for `docs/ru/docs/tutorial/path-params-nume…
Browse files Browse the repository at this point in the history
…ric-validations.md` (#9563)

Co-authored-by: Vladislav Kramorenko <85196001+Xewus@users.noreply.github.com>
  • Loading branch information
ivan-abc and Xewus committed Jun 3, 2023
1 parent 061e912 commit ad77d7f
Show file tree
Hide file tree
Showing 2 changed files with 293 additions and 0 deletions.
292 changes: 292 additions & 0 deletions docs/ru/docs/tutorial/path-params-numeric-validations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,292 @@
# Path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ валидация числовых Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `Query` Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ для query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚Π°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `Path` Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ для path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

## Π˜ΠΌΠΏΠΎΡ€Ρ‚ Path

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ `Path` ΠΈΠ· `fastapi`, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ `Annotated`:

=== "Python 3.10+"

```Python hl_lines="1 3"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="1 3"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="3-4"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_an.py!}
```

=== "Python 3.10+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="1"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_py310.py!}
```

=== "Python 3.6+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="3"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001.py!}
```

!!! info "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ"
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `Annotated` Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² FastAPI начиная с вСрсии 0.95.0 (ΠΈ с этой вСрсии рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄).

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с ошибками ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated`.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ [ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ FastAPI](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄ΠΎ 0.95.1 ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated`.

## ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ всС Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ для `Query`.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… `title` для path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `item_id`, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

=== "Python 3.10+"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="11"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_an.py!}
```

=== "Python 3.10+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="8"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_py310.py!}
```

=== "Python 3.6+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001.py!}
```

!!! note "ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅"
Path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ всСгда являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ составляСт Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слСдуСт ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `...`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ `None` ΠΈΠ»ΠΈ установитС для Π½Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, это Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π½Π΅ повлияСт ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ останСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

## Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°ΠΌ порядок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

!!! tip "Подсказка"
Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого значСния, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ `Annotated`.

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `q` ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° `str`.

И Ссли Π²Π°ΠΌ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Query`.

Но Π²Π°ΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Path` для path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `item_id`. И Ссли ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated`, Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ нСбольшиС слоТности.

Если Π²Ρ‹ помСститС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Python ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±Π΅Π· значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `q`) ΡˆΡ‘Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния для **FastAPI**. Он распознаСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΠΈΡ… названиям, Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ значСниям ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (`Query`, `Path`, ΠΈ Ρ‚.Π΄.), Π΅ΠΌΡƒ Π½Π΅ Π²Π°ΠΆΠ΅Π½ ΠΈΡ… порядок.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΊ:

=== "Python 3.6 Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="7"
{!> ../../../docs_src/path_params_numeric_validations/tutorial002.py!}
```

Но ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ `Annotated`, Π²Ρ‹ Π½Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ `Query()` ΠΈΠ»ΠΈ `Path()` Π² качСствС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

=== "Python 3.9+"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial002_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="9"
{!> ../../../docs_src/path_params_numeric_validations/tutorial002_an.py!}
```

## Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°ΠΌ порядок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹

!!! tip "Подсказка"
Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого значСния, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ `Annotated`.

Π—Π΄Π΅ΡΡŒ описан **нСбольшой ΠΏΡ€ΠΈΡ‘ΠΌ**, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ, хотя часто ΠΎΠ½ Π²Π°ΠΌ Π½Π΅ понадобится.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅:

* ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `q` Π±Π΅Π· `Query` ΠΈ Π±Π΅Π· значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
* ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item_id` с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `Path`
* ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС
* Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated`

...Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ синтаксиса Python.

ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ `*` Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Python Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с `*`, Π½ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ (ΠΏΠ°Ρ€Π°ΠΌΠΈ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), Ρ‚Π°ΠΊΠΆΠ΅ извСстными ΠΊΠ°ΠΊ <abbr title="From: K-ey W-ord Arg-uments"><code>kwargs</code></abbr>, Π΄Π°ΠΆΠ΅ Ссли Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

```Python hl_lines="7"
{!../../../docs_src/path_params_numeric_validations/tutorial003.py!}
```

### Π›ΡƒΡ‡ΡˆΠ΅ с `Annotated`

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ `Annotated`, Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π²Π°ΠΌ Π½Π΅ придётся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `*`.

=== "Python 3.9+"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial003_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="9"
{!> ../../../docs_src/path_params_numeric_validations/tutorial003_an.py!}
```

## Валидация числовых Π΄Π°Π½Π½Ρ‹Ρ…: большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `Query` ΠΈ `Path` (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠΎΠ·ΠΆΠ΅) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ограничСния для числовых Π΄Π°Π½Π½Ρ‹Ρ….

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ `ge=1`, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item_id` Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ `1` ("`g`reater than or `e`qual").

=== "Python 3.9+"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial004_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="9"
{!> ../../../docs_src/path_params_numeric_validations/tutorial004_an.py!}
```

=== "Python 3.6+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="8"
{!> ../../../docs_src/path_params_numeric_validations/tutorial004.py!}
```

## Валидация числовых Π΄Π°Π½Π½Ρ‹Ρ…: большС ΠΈ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ

Π’ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ:

* `gt`: большС (`g`reater `t`han)
* `le`: мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (`l`ess than or `e`qual)

=== "Python 3.9+"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial005_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="9"
{!> ../../../docs_src/path_params_numeric_validations/tutorial005_an.py!}
```

=== "Python 3.6+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="9"
{!> ../../../docs_src/path_params_numeric_validations/tutorial005.py!}
```

## Валидация числовых Π΄Π°Π½Π½Ρ‹Ρ…: числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, большС ΠΈ мСньшС

Валидация Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ значСниям Ρ‚ΠΈΠΏΠ° `float`.

Π’ этом случаС становится Π²Π°ΠΆΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ <abbr title="greater than"><code>gt</code></abbr>, вмСсто <abbr title="greater than or equal"><code>ge</code></abbr>, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ большС `0`, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ мСньшС `1`.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, `0.5` Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. А `0.0` ΠΈΠ»ΠΈ `0` β€” Π½Π΅Ρ‚.

Π’ΠΎ ΠΆΠ΅ самоС справСдливо ΠΈ для <abbr title="less than"><code>lt</code></abbr>.

=== "Python 3.9+"

```Python hl_lines="13"
{!> ../../../docs_src/path_params_numeric_validations/tutorial006_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="12"
{!> ../../../docs_src/path_params_numeric_validations/tutorial006_an.py!}
```

=== "Python 3.6+ Π±Π΅Π· Annotated"

!!! tip "Подсказка"
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с `Annotated` Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="11"
{!> ../../../docs_src/path_params_numeric_validations/tutorial006.py!}
```

## РСзюмС

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `Query`, `Path` (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Ρ‚Π΅ΠΌ ΠΆΠ΅ способом, ΠΊΠ°ΠΊ ΠΈ Π² Π³Π»Π°Π²Π΅ [Query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ валидация строк](query-params-str-validations.md){.internal-link target=_blank}.

А Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ числовых Π΄Π°Π½Π½Ρ‹Ρ…:

* `gt`: большС (`g`reater `t`han)
* `ge`: большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (`g`reater than or `e`qual)
* `lt`: мСньшС (`l`ess `t`han)
* `le`: мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (`l`ess than or `e`qual)

!!! info "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ"
`Query`, `Path` ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса `Param`.

ВсС ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅.

!!! note "ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ"
`Query`, `Path` ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ "классы", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΠ· `fastapi`, Π½Π° самом Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ экзСмпляры ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Ρ… классов.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ `Query`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅, являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. И ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ экзСмпляр ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠ³ΠΎ класса `Query`.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (вмСсто использования классов Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ) Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ подсвСчивал ошибки, связанныС с ΠΈΡ… Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ Π²Π°ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π΅ добавляя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ для игнорирования ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ошибок.
1 change: 1 addition & 0 deletions docs/ru/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ nav:
- python-types.md
- Π£Ρ‡Π΅Π±Π½ΠΈΠΊ - руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:
- tutorial/query-params-str-validations.md
- tutorial/path-params-numeric-validations.md
- tutorial/body-fields.md
- tutorial/background-tasks.md
- tutorial/extra-data-types.md
Expand Down

0 comments on commit ad77d7f

Please sign in to comment.