Django Template(テンプレート)で ループカウンタ番号を表示
更新日:2021年2月1日環境:Python3.8.2 Django3.1
forループカウンタ等のまとめ
変数 | 内容 |
---|---|
forloop.counter | 1から順のカウンター |
forloop.counter0 | 0から順のカウンター |
forloop.revcounter | 末尾から順のカウンター |
forloop.revcounter0 | 末尾から0順のカウンター |
forloop.first | ループの先頭はTrue、それ以外はFalse |
forloop.last | ループの最後はTrue、それ以外はFalse |
forloop.parentloop | 入れ子ループの時に、親ループ指定 |
・1から順に番号を表示する場合
templatesファイル{% for list in lists %}
{{ forloop.counter }} : {{ list.name }}
{% endfor %}
html出力{{ forloop.counter }} : {{ list.name }}
{% endfor %}
1 : name1 2 : name2 3 : name3
・0から順に番号を表示する場合
templatesファイル{% for list in lists %}
{{ forloop.counter0 }} : {{ list.name }}
{% endfor %}
html出力{{ forloop.counter0 }} : {{ list.name }}
{% endfor %}
0 : name1 1 : name2 2 : name3
・末尾から逆順に番号を表示する場合
templatesファイル{% for list in lists %}
{{ forloop.revcounter }} : {{ list.name }}
{% endfor %}
html出力{{ forloop.revcounter }} : {{ list.name }}
{% endfor %}
3 : name1 2 : name2 1 : name3
・末尾から逆順に0から番号を表示する場合
templatesファイル{% for list in lists %}
{{ forloop.revcounter0 }} : {{ list.name }}
{% endfor %}
html出力{{ forloop.revcounter0 }} : {{ list.name }}
{% endfor %}
2 : name1 1 : name2 0 : name3
・ループの先頭かの判定
templatesファイル{% for list in lists %}
{{ forloop.first }} : {{ list.name }}
{% endfor %}
html出力{{ forloop.first }} : {{ list.name }}
{% endfor %}
True : name1 False : name2 False : name3
・ループの最後かの判定
templatesファイル{% for list in lists %}
{{ forloop.last }} : {{ list.name }}
{% endfor %}
html出力{{ forloop.last }} : {{ list.name }}
{% endfor %}
False : name1 False : name2 True : name3
・1つ上の親ループのパラメータ出力
リストの中にリストが入っている場合、親ループのパラメータ出力ができます。templatesファイル
{% for children in parents %}
{% for child in children %}
{{ forloop.parentloop.counter }} : {{ child.name }}
{% endfor %}
{% endfor %}
html出力{% for child in children %}
{{ forloop.parentloop.counter }} : {{ child.name }}
{% endfor %}
{% endfor %}
1 : name1 1 : name2 1 : name3 2 : name4 2 : name5 2 : name6
・リストがない場合の出力
リストがない場合、if文でも表示を記述できますが for文では、その後にempty の記述でない場合の表示を記述できます。
templatesファイル
{% for list in lists %}
{{ list.name }}
{% empty %}
データがありませんでした。
{% endfor %}
html出力{{ list.name }}
{% empty %}
データがありませんでした。
{% endfor %}
データがありませんでした。
以上。