Jinja2で多重ループの外側ループのインデックスを取得する

jinja_logo

概要

備忘録的な小ネタ。Pythonのテンプレートエンジン「Jinja2」で多重forループのインデックスを取得する方法についてです。

Jinja2でインデックスを取得する

Jinja2では、pythonのenumerate関数に相当するものが無いので、ループのインデックスを取得する際はloop.index0(インデックスを1から始めたいときはloop.index)というオブジェクトを使います。

{% for i in list %}
    {{ loop.index0 }}
{% endfor %}

多重ループでインデックスを取得する

では、多重ループがあって、その内側のループの中で外側のループのインデックスを扱い時はどうすれば良いでしょうか?その場合は、setを使うと上手くいくそうです。

{% for i in list_a %}
    {% set outer_loop = loop %}
    {% for j in list_b %}
        {{ outer_loop.index0 }}
    {% endfor %}
{% endfor %}

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です