Django 標籤
For 迴圈
一個 for
迴圈用於迭代一個序列,例如遍歷陣列、列表或字典中的專案。
示例
遍歷字典列表
{% for x in cars %}
<h1>{{ x.brand }}</h1>
<p>{{ x.model }}</p>
<p>{{ x.year }}</p>
{% endfor %}
執行示例 »
來自模型的資料
模型中的資料就像一個包含行和列的表。
我們之前建立的 Member
模型有五行,每行有三列
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 物件的形式返回,格式與上面的 cars 示例類似:一個包含字典的列表。
<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>
執行示例 »
Loop Variables
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 的當前迭代次數。