Skip to content

Commit

Permalink
added russian translation for tutorial/path-params-numeric-validations
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-abc committed May 23, 2023
1 parent 8cc967a commit ca1ac13
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 0 deletions.
137 changes: 137 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,137 @@
# Path-параметры и валидация числовых данных

Так же, как с помощью `Query` вы можете добавлять валидацию и метаданные для query-параметров, так с помощью `Path` вы можете добавлять ту же валидацию и метаданные для path-параметров.

## Импорт Path

Сначала импортируйте `Path` из `fastapi`:

=== "Python 3.6+"

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

=== "Python 3.10+"

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

## Определите метаданные

Вы можете указать все те же параметры, что и для `Query`.

Например, чтобы указать значение метаданных `title` для path-параметра `item_id`, вы можете написать:

=== "Python 3.6+"

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

=== "Python 3.10+"

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

!!! note "Примечание"
Path-параметр всегда является обязательным, поскольку он составляет часть пути.

Поэтому следует объявить его с помощью `...`, чтобы обозначить, что этот параметр обязательный.

Тем не менее, даже если вы объявите его как `None` или установите для него значение по умолчанию, это ни на что не повлияет и параметр останется обязательным.

## Задайте нужный вам порядок параметров

Допустим, вы хотите объявить query-параметр `q` как обязательный параметр типа `str`.

И если вам больше ничего не нужно указывать для этого параметра, то нет необходимости использовать `Query`.

Но вам по-прежнему нужно использовать `Path` для path-параметра `item_id`.

Python укажет на ошибку, если параметр со значением по умолчанию вы поместите перед другим параметром, у которого нет значения по умолчанию.

Но вы можете изменить порядок параметров, чтобы параметр без значения по умолчанию (query-параметр `q`) шёл первым.

Для **FastAPI** в этом нет разницы. Он распознает параметры по их названиям, типам и значениям по умолчанию (`Query`, `Path`, и т.д.), ему не важен порядок.

Поэтому вы можете определить функцию так:

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

## Задайте нужный вам порядок параметров, полезные приёмы

Если вы хотите объявить query-параметр `q` без `Query` и без значения по умолчанию, а также path-параметр `item_id` с помощью `Path`, и указать их в другом порядке, то вы можете использовать специальную возможность синтаксиса 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!}
```

## Валидация числовых данных: больше или равно

С помощью `Query` и `Path` (и других классов, которые мы разберём позже) вы можете добавлять ограничения для числовых данных.

В этом примере при указании `ge=1`, параметр `item_id` должен быть больше или равен `1` ("`g`reater than or `e`qual").

```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 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 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 ca1ac13

Please sign in to comment.