Django forタグ
Forループ
for
ループは、配列、リスト、または辞書内の項目をループするなど、シーケンスを反復処理するために使用されます。
例
辞書のリストをループします。
{% for x in cars %}
<h1>{{ x.brand }}</h1>
<p>{{ x.model }}</p>
<p>{{ x.year }}</p>
{% endfor %}
モデルからのデータ
モデル内のデータは、行と列からなるテーブルのようなものです。
前に作成したモデルMember
には5つの行があり、各行には3つの列があります。
ID | firstname | lastname | phone | joined_date |
---|---|---|---|---|
1 | Emil | Refsnes | 5551234 | 2022-01-05 |
2 | Tobias | Refsnes | 5557777 | 2022-04-01 |
3 | Linus | Refsnes | 5554321 | 2021-12-24 |
4 | Lene | Refsnes | 5551234 | 2021-05-01 |
5 | Stalikken | Refsnes | 5559876 | 2022-09-29 |
モデルからデータをフェッチすると、それは上記の車の例と同様の形式、つまり辞書を含むリストのQuerySetオブジェクトとして提供されます。
<QuerySet [
{
'id': 1,
'firstname': 'Emil',
'lastname': 'Refsnes',
'phone': 5551234,
'joined_date': datetime.date(2022, 1, 5)
},
{
'id': 2,
'firstname': 'Tobias',
'lastname': 'Refsnes'
'phone': 5557777,
'joined_date': datetime.date(2021, 4, 1)
},
{
'id': 3,
'firstname': 'Linus',
'lastname': 'Refsnes',
'phone': 5554321,
'joined_date': datetime.date(2021, 12, 24)
},
{
'id': 4,
'firstname': 'Lene',
'lastname': 'Refsnes',
'phone': 5551234,
'joined_date': datetime.date(2021, 5, 1)
},
{
'id': 5,
'firstname': 'Stalikken',
'lastname': 'Refsnes',
'phone': 5559876,
'joined_date': datetime.date(2022, 9, 29)
}
]>
例
データベースから取得したアイテムをループします。
{% for x in members %}
<h1>{{ x.id }}</h1>
<p>
{{ x.firstname }}
{{ x.lastname }}
</p>
{% endfor %}
Reversed
このreversed
キーワードは、ループを逆の順序で実行する場合に使用します。
例
{% for x in members reversed %}
<h1>{{ x.id }}</h1>
<p>
{{ x.firstname }}
{{ x.lastname }}
</p>
{% endfor %}
Empty
キーワードempty
は、オブジェクトが空の場合に特別な処理を行う場合に使用できます。
例
<ul>
{% for x in emptytestobject %}
<li>{{ x.firstname }}</li>
{% empty %}
<li>No members</li>
{% endfor %}
</ul>
このempty
キーワードは、オブジェクトが存在しない場合にも使用できます。
例
<ul>
{% for x in myobject %}
<li>{{ x.firstname }}</li>
{% empty %}
<li>No members</li>
{% endfor %}
</ul>
ループ変数
Djangoには、ループ内で使用できる変数がいくつかあります。
- forloop.counter
- forloop.counter0
- forloop.first
- forloop.last
- forloop.parentloop
- forloop.revcounter
- forloop.revcounter0
forloop.counter
1から始まる現在の反復。
forloop.counter0
0から始まる現在の反復。
forloop.first
ループが最初の繰り返しであるかどうかをテストできます。
例
ループの最初の反復で青色の背景を描画します。
<ul>
{% for x in fruits %}
<li
{% if forloop.first %}
style='background-color:lightblue;'
{% endif %}
>{{ x }}</li>
{% endfor %}
</ul>
forloop.last
ループが最後の反復にあるかどうかをテストできます。
例
ループの最後の繰り返しの青色の背景を描画します。
<ul>
{% for x in fruits %}
<li
{% if forloop.last %}
style='background-color:lightblue;'
{% endif %}
>{{ x }}</li>
{% endfor %}
</ul>
forloop.revcounter
最後から開始し、逆方向に数えて1になる場合の現在の反復。
forloop.revcounter0
最後から開始して逆方向にカウントし、0で終わる場合の現在の反復。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。