1. TOP
  2. ブログ
  3. Django Template(テンプレート)で ループカウンタ番号を表示

Django Template(テンプレート)で ループカウンタ番号を表示

更新日:2018年8月24日

Django Template(テンプレート) のforループ出力部分で、ループカウンタ(番号、数字)を表示したい時の簡単な方法を記載しておきます。

環境:Python3.6.5 Django2.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出力
  1 : name1
  2 : name2
  3 : name3

・0から順に番号を表示する場合

templatesファイル
{% for list in lists %}
    {{ forloop.counter0 }} : {{ list.name }}
{% endfor %}
html出力
  0 : name1
  1 : name2
  2 : name3

・末尾から逆順に番号を表示する場合

templatesファイル
{% for list in lists %}
    {{ forloop.revcounter }} : {{ list.name }}
{% endfor %}
html出力
  3 : name1
  2 : name2
  1 : name3

・末尾から逆順に0から番号を表示する場合

templatesファイル
{% for list in lists %}
    {{ forloop.revcounter0 }} : {{ list.name }}
{% endfor %}
html出力
  2 : name1
  1 : name2
  0 : name3


・ループの先頭かの判定

templatesファイル
{% for list in lists %}
    {{ forloop.first }} : {{ list.name }}
{% endfor %}
html出力
  True : name1
  False : name2
  False : name3

・ループの最後かの判定

templatesファイル
{% for list in lists %}
    {{ forloop.last }} : {{ list.name }}
{% endfor %}
html出力
  False : name1
  False : name2
  True : name3


・1つ上の親ループのパラメータ出力

リストの中にリストが入っている場合、親ループのパラメータ出力ができます。
templatesファイル
{% for children in parents %}
    {% for child in children %}
        {{ forloop.parentloop.counter }} : {{ child.name }}
    {% endfor %}
{% endfor %}
html出力
  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出力
  データがありませんでした。

以上。

B!

前の記事:Djangoレスポンスコード301,302,404,410返す方法まとめ[responsecode]

次の記事:Django Template(テンプレート) for文 使い方 リスト、タプル、辞書