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

目次
  1. 概要
  2. Jinja2でインデックスを取得する
  3. 多重ループでインデックスを取得する
  4. 参考

概要

備忘録的な小ネタ。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 %}

参考

Get loop index of outer loop

コメント