Django 标签
For 循环
A for
loop 用于迭代一个序列,例如循环迭代数组、列表或字典中的项目。
例子
循环遍历字典列表:
{% for x in cars %}
<h1>{{ x.brand }}</h1>
<p>{{ x.model }}</p>
<p>{{ x.year }}</p>
{% endfor %}
运行示例 »
来自模型的数据
模型中的数据就像一张有行和列的表格。
这 Member
我们之前创建的模型有五行,每行有三列:
ID | 名 | 姓 | 电话 | 加入日期 |
---|---|---|---|---|
1 | 埃米尔 | 雷夫斯内斯 | 5551234 | 2022-01-05 |
2 | 托拜厄斯 | 雷夫斯内斯 | 5557777 | 2022-04-01 |
3 | 莱纳斯 | 雷夫斯内斯 | 5554321 | 2021-12-24 |
4 | 莱内 | 雷夫斯内斯 | 5551234 | 2021-05-01 |
5 | 斯塔利肯 | 雷夫斯内斯 | 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
当您想以相反的顺序进行循环时,使用关键字。
例子
{% for x in members reversed %}
<h1>{{ x.id }}</h1>
<p>
{{ x.firstname }}
{{ x.lastname }}
</p>
{% endfor %}
运行示例 »
空的
这 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 有一些在循环中可用的变量:
- for循环计数器
- for循环.counter0
- for循环首先
- for循环最后
- for循环.parent循环
- forloop.revcounter
- forloop.revcounter0
for循环计数器
当前迭代,从 1 开始。
for循环.counter0
当前迭代,从 0 开始。
for循环首先
允许您测试循环是否处于第一次迭代。
例子
为循环的第一次迭代绘制蓝色背景:
<ul>
{% for x in fruits %}
<li
{% if forloop.first %}
style='background-color:lightblue;'
{% endif %}
>{{ x }}</li>
{% endfor %}
</ul>
运行示例 »
for循环最后
允许您测试循环是否处于最后一次迭代。
例子
为循环的最后一次迭代绘制蓝色背景:
<ul>
{% for x in fruits %}
<li
{% if forloop.last %}
style='background-color:lightblue;'
{% endif %}
>{{ x }}</li>
{% endfor %}
</ul>
运行示例 »
forloop.revcounter
如果从末尾开始向后数,则当前迭代最终为 1。
forloop.revcounter0
如果从末尾开始向后数,则当前迭代最终为 0。