推荐答案
在 Django 模板中,可以使用 {% for %}
标签来进行循环。以下是一个简单的示例:
<ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul>
在这个示例中,items
是一个可迭代的对象(例如列表或查询集),item
是循环中的当前项。{% for %}
标签会遍历 items
中的每一个元素,并在每次迭代时将当前元素赋值给 item
。
本题详细解读
1. {% for %}
标签的基本用法
{% for %}
标签用于在 Django 模板中进行循环。它的基本语法如下:
{% for item in items %} {{ item }} {% endfor %}
items
是一个可迭代的对象,例如列表、元组、查询集等。item
是循环中的当前项,可以在循环体内使用。
2. 循环中的特殊变量
在 {% for %}
循环中,Django 提供了一些特殊变量来帮助你更好地控制循环:
forloop.counter
:当前循环的索引(从 1 开始)。forloop.counter0
:当前循环的索引(从 0 开始)。forloop.revcounter
:当前循环的倒序索引(从总数开始)。forloop.revcounter0
:当前循环的倒序索引(从总数减 1 开始)。forloop.first
:布尔值,表示当前项是否是第一项。forloop.last
:布尔值,表示当前项是否是最后一项。forloop.parentloop
:在嵌套循环中,表示外层循环的forloop
对象。
示例:
<ul> {% for item in items %} <li>{{ forloop.counter }}: {{ item }}</li> {% endfor %} </ul>
3. 处理空循环
如果 items
为空,可以使用 {% empty %}
标签来显示一条消息:
<ul> {% for item in items %} <li>{{ item }}</li> {% empty %} <li>No items available.</li> {% endfor %} </ul>
4. 嵌套循环
Django 模板支持嵌套循环,可以在一个循环内部再使用另一个循环:
-- -------------------- ---- ------- ---- -- --- -------- -- ---------- -- ------ ------------- -- ---- -- --- ---- -- -------------- -- ------ ---- ------- -- ------ -- ----- ----- -- ------ -- -----
5. 循环中的条件判断
在循环中,可以使用 {% if %}
标签来进行条件判断:
<ul> {% for item in items %} {% if item.is_active %} <li>{{ item }}</li> {% endif %} {% endfor %} </ul>
6. 循环中的过滤器
在循环中,可以使用 Django 模板过滤器对数据进行处理:
<ul> {% for item in items %} <li>{{ item|lower }}</li> {% endfor %} </ul>
7. 循环中的字典遍历
如果 items
是一个字典,可以使用 items
方法来遍历键值对:
<ul> {% for key, value in items.items %} <li>{{ key }}: {{ value }}</li> {% endfor %} </ul>
8. 循环中的范围遍历
Django 模板还支持使用 range
函数进行范围遍历:
<ul> {% for i in "12345" %} <li>{{ i }}</li> {% endfor %} </ul>
或者:
<ul> {% for i in "12345"|make_list %} <li>{{ i }}</li> {% endfor %} </ul>
9. 循环中的自定义过滤器
你还可以在循环中使用自定义的模板过滤器来处理数据:
<ul> {% for item in items %} <li>{{ item|my_custom_filter }}</li> {% endfor %} </ul>
10. 循环中的上下文变量
在循环中,你可以访问模板上下文中的其他变量:
<ul> {% for item in items %} <li>{{ item }} - {{ user.username }}</li> {% endfor %} </ul>
11. 循环中的模板继承
在循环中,你可以使用 {% include %}
标签来包含其他模板:
<ul> {% for item in items %} {% include "item_template.html" %} {% endfor %} </ul>
12. 循环中的模板继承
在循环中,你可以使用 {% block %}
标签来继承父模板的内容:
-- -------------------- ---- ------- -- ------- ----------- -- -- ----- ------- -- ---- -- --- ---- -- ----- -- ------ ---- ------- -- ------ -- ----- -- -------- --
13. 循环中的模板继承
在循环中,你可以使用 {% block %}
标签来继承父模板的内容:
-- -------------------- ---- ------- -- ------- ----------- -- -- ----- ------- -- ---- -- --- ---- -- ----- -- ------ ---- ------- -- ------ -- ----- -- -------- --
14. 循环中的模板继承
在循环中,你可以使用 {% block %}
标签来继承父模板的内容:
-- -------------------- ---- ------- -- ------- ----------- -- -- ----- ------- -- ---- -- --- ---- -- ----- -- ------ ---- ------- -- ------ -- ----- -- -------- --