Bu bölümde, Flask uygulamalarında dinamik ve karmaşık web sayfaları oluşturmak için şablonların (templates) nasıl kullanıldığını öğreneceksin.
View fonksiyonunun içine doğrudan HTML yazmak büyük uygulamalarda yönetilemez hale gelir. Uygulama mantığı (Python kodu) ile sayfa sunumu (HTML) birbirinden ayrılmalıdır. Bu ayrımı sağlayan yapıya şablon (template) denir.
Flask'ta şablonlar, uygulama paketi içindeki templates klasöründe ayrı dosyalar olarak saklanır.
(venv) $ mkdir app/templates
app/templates/index.html dosyasını oluştur:
<!doctype html>
<html>
<head>
<title>{{ title }} - Microblog</title>
</head>
<body>
<h1>Hello, {{ user.username }}!</h1>
</body>
</html>
{{ ... }} blokları dinamik içerik için yer tutuculardır (placeholder). Bu değerler çalışma zamanında belirlenir.
app/routes.py dosyasını şu şekilde düzenle:
from flask import render_template
from app import app
@app.route('/')
@app.route('/index')
def index():
user = {'username': 'Miguel'}
return render_template('index.html', title='Home', user=user)
render_template() fonksiyonu, şablon dosyasını alır ve yer tutucuları gerçek değerlerle doldurarak tam bir HTML sayfası döndürür. Bu işleme render etme denir.
Flask, şablon motoru olarak Jinja kullanır.