Form Model'leri¶
🌐 Translation by AI and humans
This translation was made by AI guided by humans. 🤝
It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖
You can improve this translation by helping us guide the AI LLM better.
FastAPI'de form field'larını tanımlamak için Pydantic model'lerini kullanabilirsiniz.
Bilgi
Form'ları kullanmak için önce python-multipart'ı yükleyin.
Bir virtual environment oluşturduğunuzdan, onu etkinleştirdiğinizden ve ardından paketi kurduğunuzdan emin olun. Örneğin:
$ pip install python-multipart
Not
Bu özellik FastAPI 0.113.0 sürümünden itibaren desteklenmektedir. 🤓
Form'lar için Pydantic Model'leri¶
Sadece, form field olarak almak istediğiniz alanlarla bir Pydantic model tanımlayın ve ardından parametreyi Form olarak bildirin:
from typing import Annotated
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class FormData(BaseModel):
username: str
password: str
@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
return data
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class FormData(BaseModel):
username: str
password: str
@app.post("/login/")
async def login(data: FormData = Form()):
return data
FastAPI, request içindeki form data'dan her bir field için veriyi çıkarır ve size tanımladığınız Pydantic model'ini verir.
Dokümanları Kontrol Edin¶
Bunu /docs altındaki doküman arayüzünde doğrulayabilirsiniz:
Fazladan Form Field'larını Yasaklayın¶
Bazı özel kullanım senaryolarında (muhtemelen çok yaygın değildir), form field'larını yalnızca Pydantic model'inde tanımlananlarla sınırlamak isteyebilirsiniz. Ve fazladan gelen field'ları yasaklayabilirsiniz.
Not
Bu özellik FastAPI 0.114.0 sürümünden itibaren desteklenmektedir. 🤓
Herhangi bir extra field'ı forbid etmek için Pydantic'in model konfigürasyonunu kullanabilirsiniz:
from typing import Annotated
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class FormData(BaseModel):
username: str
password: str
model_config = {"extra": "forbid"}
@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
return data
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class FormData(BaseModel):
username: str
password: str
model_config = {"extra": "forbid"}
@app.post("/login/")
async def login(data: FormData = Form()):
return data
Bir client fazladan veri göndermeye çalışırsa, bir error response alır.
Örneğin, client şu form field'larını göndermeye çalışırsa:
username:Rickpassword:Portal Gunextra:Mr. Poopybutthole
extra field'ının izinli olmadığını söyleyen bir error response alır:
{
"detail": [
{
"type": "extra_forbidden",
"loc": ["body", "extra"],
"msg": "Extra inputs are not permitted",
"input": "Mr. Poopybutthole"
}
]
}
Özet¶
FastAPI'de form field'larını tanımlamak için Pydantic model'lerini kullanabilirsiniz. 😎