Şablonlar¶
🌐 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 ile istediğiniz herhangi bir template engine'i kullanabilirsiniz.
Yaygın bir tercih, Flask ve diğer araçların da kullandığı Jinja2'dir.
Bunu kolayca yapılandırmak için, doğrudanFastAPI uygulamanızda kullanabileceğiniz yardımcı araçlar vardır (Starlette tarafından sağlanır).
Bağımlılıkları Yükleme¶
Birvirtual environment oluşturduğunuzdan, etkinleştirdiğinizden vejinja2'yi yüklediğinizden emin olun:
$pipinstalljinja2---> 100%Jinja2Templates Kullanımı¶
Jinja2Templates'ı içe aktarın.- Daha sonra tekrar kullanabileceğiniz bir
templatesnesnesi oluşturun. - Template döndürecekpath operation içinde bir
Requestparametresi tanımlayın. - Oluşturduğunuz
templatesnesnesini kullanarak birTemplateResponserender edip döndürün; template'in adını, request nesnesini ve Jinja2 template'i içinde kullanılacak anahtar-değer çiftlerini içeren bir "context" sözlüğünü (dict) iletin.
fromfastapiimportFastAPI,Requestfromfastapi.responsesimportHTMLResponsefromfastapi.staticfilesimportStaticFilesfromfastapi.templatingimportJinja2Templatesapp=FastAPI()app.mount("/static",StaticFiles(directory="static"),name="static")templates=Jinja2Templates(directory="templates")@app.get("/items/{id}",response_class=HTMLResponse)asyncdefread_item(request:Request,id:str):returntemplates.TemplateResponse(request=request,name="item.html",context={"id":id})Note
FastAPI 0.108.0 ve Starlette 0.29.0 öncesinde, ilk parametrename idi.
Ayrıca, daha önceki sürümlerderequest nesnesi, Jinja2 için context içindeki anahtar-değer çiftlerinin bir parçası olarak geçirilirdi.
Tip
response_class=HTMLResponse olarak tanımlarsanız doküman arayüzü (docs UI) response'un HTML olacağını anlayabilir.
Teknik Detaylar
from starlette.templating import Jinja2Templates da kullanabilirsiniz.
FastAPI, geliştirici için kolaylık olması adınastarlette.templating içeriğinifastapi.templating olarak da sunar. Ancak mevcut response'ların çoğu doğrudan Starlette'ten gelir.Request veStaticFiles için de aynı durum geçerlidir.
Template Yazma¶
Ardından örneğintemplates/item.html konumunda bir template yazabilirsiniz:
<html><head> <title>Item Details</title> <link href="{{url_for('static',path='/styles.css')}}" rel="stylesheet"></head><body> <h1><a href="{{url_for('read_item',id=id)}}">Item ID:{{id}}</a></h1></body></html>Template Context Değerleri¶
Şu HTML içeriğinde:
Item ID:{{id}}...gösterilecek olanid, sizin "context" olarak ilettiğinizdict içinden alınır:
{"id":id}Örneğin ID değeri42 ise, şu şekilde render edilir:
Item ID: 42Templateurl_for Argümanları¶
Template içindeurl_for() da kullanabilirsiniz; argüman olarak,path operation function'ınızın kullandığı argümanların aynısını alır.
Dolayısıyla şu bölüm:
<a href="{{url_for('read_item',id=id)}}">...path operation function olanread_item(id=id) tarafından handle edilecek URL'nin aynısına bir link üretir.
Örneğin ID değeri42 ise, şu şekilde render edilir:
<ahref="/items/42">Template'ler ve statik dosyalar¶
Template içindeurl_for() kullanabilir ve örneğinname="static" ile mount ettiğinizStaticFiles ile birlikte kullanabilirsiniz.
<html><head> <title>Item Details</title> <link href="{{url_for('static',path='/styles.css')}}" rel="stylesheet"></head><body> <h1><a href="{{url_for('read_item',id=id)}}">Item ID:{{id}}</a></h1></body></html>Bu örnekte, şu şekildestatic/styles.css konumundaki bir CSS dosyasına link verir:
h1{color:green;}VeStaticFiles kullandığınız için, bu CSS dosyasıFastAPI uygulamanız tarafından/static/styles.css URL'sinde otomatik olarak servis edilir.
Daha fazla detay¶
Template'leri nasıl test edeceğiniz dahil daha fazla detay içinStarlette'in template dokümantasyonuna bakın.







