最适合网络开发者的网站
Django。初学者课程

尿素 西斯

Django 标签


For 循环

A for loop 用于迭代一个序列,例如循环迭代数组、列表或字典中的项目。

例子

循环遍历列表的项目:

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}
运行示例 »

例子

循环遍历字典列表:

{% 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 开始。

例子

<ul>
  {% for x in fruits %}
    <li>{{ forloop.counter }}</li>
  {% endfor %}
</ul> 
运行示例 »

for循环.counter0

当前迭代,从 0 开始。

例子

<ul>
  {% for x in fruits %}
    <li>{{ forloop.counter0 }}</li>
  {% endfor %}
</ul> 
运行示例 »

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。

例子

<ul>
  {% for x in fruits %}
    <li>{{ forloop.revcounter }}</li>
  {% endfor %}
</ul> 
运行示例 »

forloop.revcounter0

如果从末尾开始向后数,则当前迭代最终为 0。

例子

<ul>
  {% for x in fruits %}
    <li>{{ forloop.revcounter0 }}</li>
  {% endfor %}
</ul> 
运行示例 »


评论