Skip to content

Commit e50faca

Browse files
authored
🌐 Add Portuguese translation for docs/pt/docs/tutorial/request-form-models.md (#12175)
1 parent 93e50e3 commit e50faca

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# Modelos de Formulários
2+
3+
Você pode utilizar **Modelos Pydantic** para declarar **campos de formulários** no FastAPI.
4+
5+
/// info | "Informação"
6+
7+
Para utilizar formulários, instale primeiramente o <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
8+
9+
Certifique-se de criar um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, ativá-lo, e então instalar. Por exemplo:
10+
11+
```console
12+
$ pip install python-multipart
13+
```
14+
15+
///
16+
17+
/// note | "Nota"
18+
19+
Isto é suportado desde a versão `0.113.0` do FastAPI. 🤓
20+
21+
///
22+
23+
## Modelos Pydantic para Formulários
24+
25+
Você precisa apenas declarar um **modelo Pydantic** com os campos que deseja receber como **campos de formulários**, e então declarar o parâmetro como um `Form`:
26+
27+
//// tab | Python 3.9+
28+
29+
```Python hl_lines="9-11 15"
30+
{!> ../../../docs_src/request_form_models/tutorial001_an_py39.py!}
31+
```
32+
33+
////
34+
35+
//// tab | Python 3.8+
36+
37+
```Python hl_lines="8-10 14"
38+
{!> ../../../docs_src/request_form_models/tutorial001_an.py!}
39+
```
40+
41+
////
42+
43+
//// tab | Python 3.8+ non-Annotated
44+
45+
/// tip | "Dica"
46+
47+
Prefira utilizar a versão `Annotated` se possível.
48+
49+
///
50+
51+
```Python hl_lines="7-9 13"
52+
{!> ../../../docs_src/request_form_models/tutorial001.py!}
53+
```
54+
55+
////
56+
57+
O **FastAPI** irá **extrair** as informações para **cada campo** dos **dados do formulário** na requisição e dar para você o modelo Pydantic que você definiu.
58+
59+
## Confira os Documentos
60+
61+
Você pode verificar na UI de documentação em `/docs`:
62+
63+
<div class="screenshot">
64+
<img src="/img/tutorial/request-form-models/image01.png">
65+
</div>
66+
67+
## Proibir Campos Extras de Formulários
68+
69+
Em alguns casos de uso especiais (provavelmente não muito comum), você pode desejar **restringir** os campos do formulário para aceitar apenas os declarados no modelo Pydantic. E **proibir** qualquer campo **extra**.
70+
71+
/// note | "Nota"
72+
73+
Isso é suportado deste a versão `0.114.0` do FastAPI. 🤓
74+
75+
///
76+
77+
Você pode utilizar a configuração de modelo do Pydantic para `proibir` qualquer campo `extra`:
78+
79+
//// tab | Python 3.9+
80+
81+
```Python hl_lines="12"
82+
{!> ../../../docs_src/request_form_models/tutorial002_an_py39.py!}
83+
```
84+
85+
////
86+
87+
//// tab | Python 3.8+
88+
89+
```Python hl_lines="11"
90+
{!> ../../../docs_src/request_form_models/tutorial002_an.py!}
91+
```
92+
93+
////
94+
95+
//// tab | Python 3.8+ non-Annotated
96+
97+
/// tip
98+
99+
Prefira utilizar a versão `Annotated` se possível.
100+
101+
///
102+
103+
```Python hl_lines="10"
104+
{!> ../../../docs_src/request_form_models/tutorial002.py!}
105+
```
106+
107+
////
108+
109+
Caso um cliente tente enviar informações adicionais, ele receberá um retorno de **erro**.
110+
111+
Por exemplo, se o cliente tentar enviar os campos de formulário:
112+
113+
* `username`: `Rick`
114+
* `password`: `Portal Gun`
115+
* `extra`: `Mr. Poopybutthole`
116+
117+
Ele receberá um retorno de erro informando-o que o campo `extra` não é permitido:
118+
119+
```json
120+
{
121+
"detail": [
122+
{
123+
"type": "extra_forbidden",
124+
"loc": ["body", "extra"],
125+
"msg": "Extra inputs are not permitted",
126+
"input": "Mr. Poopybutthole"
127+
}
128+
]
129+
}
130+
```
131+
132+
## Resumo
133+
134+
Você pode utilizar modelos Pydantic para declarar campos de formulários no FastAPI. 😎

0 commit comments

Comments
 (0)