Form Model'leri¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâ LLM'ini daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
FastAPI'deform field'larını tanımlamak içinPydantic model'lerini kullanabilirsiniz.
Bilgi
Form'ları kullanmak için öncepython-multipart'ı yükleyin.
Birvirtual environment oluşturduğunuzdan, onu etkinleştirdiğinizden ve ardından paketi kurduğunuzdan emin olun. Örneğin:
$pipinstallpython-multipartNot
Bu özellik FastAPI0.113.0 sürümünden itibaren desteklenmektedir. 🤓
Form'lar için Pydantic Model'leri¶
Sadece,form field olarak almak istediğiniz alanlarla birPydantic model tanımlayın ve ardından parametreyiForm olarak bildirin:
fromtypingimportAnnotatedfromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:str@app.post("/login/")asyncdeflogin(data:Annotated[FormData,Form()]):returndata🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:str@app.post("/login/")asyncdeflogin(data:FormData=Form()):returndataFastAPI, request içindekiform data'danher 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ımlananlarlasınırlamak isteyebilirsiniz. Vefazladan gelen field'larıyasaklayabilirsiniz.
Not
Bu özellik FastAPI0.114.0 sürümünden itibaren desteklenmektedir. 🤓
Herhangi birextra field'ıforbid etmek için Pydantic'in model konfigürasyonunu kullanabilirsiniz:
fromtypingimportAnnotatedfromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:strmodel_config={"extra":"forbid"}@app.post("/login/")asyncdeflogin(data:Annotated[FormData,Form()]):returndata🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportFastAPI,FormfrompydanticimportBaseModelapp=FastAPI()classFormData(BaseModel):username:strpassword:strmodel_config={"extra":"forbid"}@app.post("/login/")asyncdeflogin(data:FormData=Form()):returndataBir client fazladan veri göndermeye çalışırsa, birerror 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. 😎







