2.5 KiB
Form Model'leri
FastAPI'de form field'larını tanımlamak için Pydantic model'lerini kullanabilirsiniz.
/// info | Bilgi
Form'ları kullanmak için önce python-multipart'ı yükleyin.
Bir virtual environment{.internal-link target=_blank} oluşturduğunuzdan, onu etkinleştirdiğinizden ve ardından paketi kurduğunuzdan emin olun. Örneğin:
$ pip install python-multipart
///
/// note | 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:
{* ../../docs_src/request_form_models/tutorial001_an_py39.py hl[9:11,15] *}
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.
/// note | 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:
{* ../../docs_src/request_form_models/tutorial002_an_py39.py hl[12] *}
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. 😎
