[Django] テンプレートのfor文

Django
スポンサーリンク

リストのfor文

<ul>
{% for data in data_list %}
    <li>{{ data }}</li>
{% endfor %}
</ul>

リストのリストのfor文

<ul>
{% for data1, data2 in data_list_list %}
    <li>{{ data1 }} & {{ data2 }}</li>
{% endfor %}
</ul>

辞書のfor文

<ul>
{% for key, value in data_dict.items %}
<li>{{ key }} : {{ value }}</li>
{% endfor %}
</ul>

空の場合の処理

{% for data in empty_data_list %}
<p>{{ data }}</p>
{% empty %}
<p>空です。</p>
{% endfor %}

ループ回数を使う

1からスタートのループ回数

forloop.counter

<ul>
{% for data in data_list %}
{% if forloop.counter == 2 %}
{% comment %}2番目は表示しない{% endcomment %}
{% else %}
<li>{{ forloop.counter }} : {{ data }}</li>
{% endif %}
{% endfor %}
</ul>

0からスタートのループ回数

forloop.counter0

<ul>
{% for data in data_list %}
{% if forloop.counter0 == 1 %}
{% comment %}2番目は表示しない{% endcomment %}
{% else %}
<li>{{ forloop.counter0 }} : {{ data }}</li>
{% endif %}
{% endfor %}
</ul>

1からスタートの末尾から数えたループ回数

forloop.revcounter

{% for data in data_list %}
{% if forloop.revcounter == 2 %}
{% comment %}後ろから2番目は表示しない{% endcomment %}
{% else %}
<li>{{ forloop.revcounter }} : {{ data }}</li>
{% endif %}
{% endfor %}

0からスタートの末尾から数えたループ回数

{% for data in data_list %}
{% if forloop.revcounter0 == 1 %}
{% comment %}後ろから2番目は表示しない{% endcomment %}
{% else %}
<li>{{ forloop.revcounter0 }} : {{ data }}</li>
{% endif %}
{% endfor %}

最初のループ/最後のループ

forloop.first

ループが最初の場合True。

forloop.last

ループが最後の場合True。

{% for data in data_list %}
{% if forloop.first %}
<ul>
{% endif %}
<li>{{ forloop.first }}/{{ forloop.last }} : {{ data }}</li>
{% if forloop.last %}
</ul>
{% endif %}
{% endfor %}

親のループ

forloop.parentloop

入れ子のループの場合、一つ上のループの情報を取得。

{% for d_list in data_list_list %}
<ul>
{% for d in d_list %}
<li>{{ forloop.parentloop.counter }}-{{ forloop.counter }}:{{ d }}</li>
{% endfor %}
</ul>
{% endfor %}

タイトルとURLをコピーしました