for循环 – Django模板标签
Django模板是一个使用Django模板语言标记的文本文档或Python字符串。Django是一个强大的包含电池的框架,为在模板中呈现数据提供了便利。Django模板不仅允许从视图到模板传递数据,而且还提供了一些有限的编程功能,如变量、for循环、注释、扩展等。
本文围绕如何在Templates中使用for tag展开。for tag在一个数组中的每个项目上循环,使该项目在一个上下文变量中可用。
语法
{% for i in list %}
{% endfor %}
示例
例如,要显示 athlete_list 中提供的运动员名单。
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
for – Django模板标签说明
用一个例子说明如何在Django模板中使用for标签。考虑一个名为geeksforgeeks的项目,有一个名为geeks的应用程序。
现在创建一个视图,我们将通过它来传递上下文字典。
在 geeks/views.py ,
# import Http Response from django
from django.shortcuts import render
# create a function
def geeks_view(request):
# create a dictionary
context = {
"data" : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
}
# return response
return render(request, "geeks.html", context)
创建一个url路径来映射到这个视图。在geeks/urls.py ,
from django.urls import path
# importing views from views.py
from .views import geeks_view
urlpatterns = [
path('', geeks_view),
]
在templates/geeks.html中创建一个模板。
{% for i in data %}
<div class="row">
{{ i }}
</div>
{% endfor %}
让我们检查一下”/”上显示的内容是否在模板中显示。
在for标签之间围起来的任何东西都会被重复,即循环运行的次数。
高级用法
人们也可以使用变量。例如,如果你有两个模板变量,rowvalue1和rowvalue2,你可以像这样交替使用它们的值。
{% for o in some_list %}
<tr class="{% cycle rowvalue1 rowvalue2 %}">
...
</tr>
{% endfor %}
高级用法
我们可以通过使用{% for obj in list reversed %}在一个列表上进行反向循环。.
如果你需要在一个列表上进行循环,你可以把每个子列表中的值解压到各个变量中。例如,如果你的上下文中包含一个叫做point的(x,y)坐标列表,你可以用下面的方法来输出点的列表。
{% for x, y in points %}
There is a point at {{ x }}, {{ y }}
{% endfor %}
如果你需要访问一个字典中的项目,这也会很有用。例如,如果你的上下文包含一个字典数据,下面将显示这个字典的键和值。
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}