概要
テンプレートで共通で使いたい変数や関数を定義するのためには、Context Processorsが便利です。
変数編
例えば、今日の日付をテンプレートで表示したい場合は、以下のようなContext Processorを定義しておくと、毎回テンプレートに渡す必要がなくなるので、便利です
@app.context_processor
def jst_today():
from datetime import datetime, timedelta, timezone
JST = timezone(timedelta(hours=+9), 'JST')
jst_today = datetime.now(JST).strftime('%Y/%m/%d')
return dict(jst_today=jst_today)
テンプレートでは以下のようにして、今日の日付を表示することができます。
{{ jst_today }}
関数編
数字に通貨の単位をつけて返す関数は、以下のようにして定義しておくと便利です。
@app.context_processor
def utility_processor():
def format_price(amount, currency=u'円'):
return u'{0:.2f}{1}'.format(amount, currency)
return dict(format_price=format_price)
テンプレートでは以下のように呼び出すことができます。
{{ format_price(100) }}
参考
[1] https://flask.palletsprojects.com/en/1.1.x/templating/#context-processors