Flask/Jinja2でよく調べるTips集

2021年8月27日

はじめに

Jinja2で地味にどうやるんだっけ…?となるような小ネタをまとめました。
他にもあれば随時更新予定。

リストの長さ取得

{{ list | length }}

変数宣言

{% set val = 'some value' %}

変数が未定義かチェック

{% if val is defined %}

JavaScriptの中で呼び出す

<script>
const js_val = {{ val | tojson }};
</script>

インデックス付きで繰り返し

{% for value in values %}
    {{ loop0.index }}:{{ value|e }}
{% endfor %}

オブジェクトのメソッド呼び出し

Python/Flask側からオブジェクトを渡して、そのオブジェクトが持っているメソッドを実行して結果を得ることもできます。

# クラス定義
class Sample:
    def func():
        return 'Hello'
# appで渡す
@app.route('/')
    def index():
        obj = Sample()
        return render_template('index.html', obj=obj)
# Jinja2側で呼び出し
{{ obj.func() }}

参考