]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Russian translation for `docs/tutorial/request-forms.md` (#9841)
authordedkot <dedkot01@gmail.com>
Thu, 27 Jul 2023 18:47:42 +0000 (21:47 +0300)
committerGitHub <noreply@github.com>
Thu, 27 Jul 2023 18:47:42 +0000 (20:47 +0200)
docs/ru/docs/tutorial/request-forms.md [new file with mode: 0644]

diff --git a/docs/ru/docs/tutorial/request-forms.md b/docs/ru/docs/tutorial/request-forms.md
new file mode 100644 (file)
index 0000000..a20cf78
--- /dev/null
@@ -0,0 +1,92 @@
+# Данные формы
+
+Когда вам нужно получить поля формы вместо JSON, вы можете использовать `Form`.
+
+!!! info "Дополнительная информация"
+    Чтобы использовать формы, сначала установите <a href="https://andrew-d.github.io/python-multipart/" class="external-link" target="_blank">`python-multipart`</a>.
+
+    Например, выполните команду `pip install python-multipart`.
+
+## Импорт `Form`
+
+Импортируйте `Form` из `fastapi`:
+
+=== "Python 3.9+"
+
+    ```Python hl_lines="3"
+    {!> ../../../docs_src/request_forms/tutorial001_an_py39.py!}
+    ```
+
+=== "Python 3.6+"
+
+    ```Python hl_lines="1"
+    {!> ../../../docs_src/request_forms/tutorial001_an.py!}
+    ```
+
+=== "Python 3.6+ без Annotated"
+
+    !!! tip "Подсказка"
+        Рекомендуется использовать 'Annotated' версию, если это возможно.
+
+    ```Python hl_lines="1"
+    {!> ../../../docs_src/request_forms/tutorial001.py!}
+    ```
+
+## Определение параметров `Form`
+
+Создайте параметры формы так же, как это делается для `Body` или `Query`:
+
+=== "Python 3.9+"
+
+    ```Python hl_lines="9"
+    {!> ../../../docs_src/request_forms/tutorial001_an_py39.py!}
+    ```
+
+=== "Python 3.6+"
+
+    ```Python hl_lines="8"
+    {!> ../../../docs_src/request_forms/tutorial001_an.py!}
+    ```
+
+=== "Python 3.6+ без Annotated"
+
+    !!! tip "Подсказка"
+        Рекомендуется использовать 'Annotated' версию, если это возможно.
+
+    ```Python hl_lines="7"
+    {!> ../../../docs_src/request_forms/tutorial001.py!}
+    ```
+
+Например, в одном из способов использования спецификации OAuth2 (называемом "потоком пароля") требуется отправить `username` и `password` в виде полей формы.
+
+Данный способ требует отправку данных для авторизации посредством формы (а не JSON) и обязательного наличия в форме строго именованных полей  `username` и `password`.
+
+Вы можете настроить `Form` точно так же, как настраиваете и  `Body` ( `Query`, `Path`, `Cookie`), включая валидации, примеры, псевдонимы (например, `user-name` вместо `username`) и т.д.
+
+!!! info "Дополнительная информация"
+    `Form` - это класс, который наследуется непосредственно от `Body`.
+
+!!! tip "Подсказка"
+   Вам необходимо явно указывать параметр `Form` при объявлении каждого поля, иначе поля будут интерпретироваться как параметры запроса или параметры тела (JSON).
+
+## О "полях формы"
+
+Обычно способ, которым HTML-формы (`<form></form>`) отправляют данные на сервер, использует "специальное" кодирование для этих данных, отличное от JSON.
+
+**FastAPI** гарантирует правильное чтение этих данных из соответствующего места, а не из JSON.
+
+!!! note "Технические детали"
+    Данные из форм обычно кодируются с использованием "типа медиа" `application/x-www-form-urlencoded`.
+
+    Но когда форма содержит файлы, она кодируется как `multipart/form-data`. Вы узнаете о работе с файлами в следующей главе.
+
+    Если вы хотите узнать больше про кодировки и поля формы, ознакомьтесь с <a href="https://developer.mozilla.org/ru/docs/Web/HTTP/Methods/POST" class="external-link" target="_blank">документацией <abbr title="Mozilla Developer Network">MDN</abbr> для `POST` на веб-сайте</a>.
+
+!!! warning "Предупреждение"
+    Вы можете объявлять несколько параметров `Form` в *операции пути*, но вы не можете одновременно с этим объявлять поля `Body`, которые вы ожидаете получить в виде JSON, так как запрос будет иметь тело, закодированное с использованием `application/x-www-form-urlencoded`, а не `application/json`.
+
+    Это не ограничение **FastAPI**, это часть протокола HTTP.
+
+## Резюме
+
+Используйте `Form` для объявления входных параметров данных формы.