{% for 变量 in 可迭代对象 %}
... 循环语句
{% empty %}
... 可迭代对象无数据时填充的语句
{% endfor %}
from django.template import Template,Context def test_for(request): #调用template()方法生成模板 t1=Template(""" {% for item in list %} <li>{{ item }}</li> {% empty %} <h1>如果找不到你想要,可以来C语言中文网(网址:http://task.lmcjl.com/)</h1> {% endfor %} """) #调用 Context()方法 c1= Context({'list':['Python','Java','C','Javascript','C++']}) html=t1.render(c1) return HttpResponse(html)并配置路由映射关系,如下所示:
path('test_for/',views.test_for)
访问 127.0.0.1:8000/test_for 得到如下页面:
图1:for 标签的使用
图2:for 标签的使用
提示:与 Python 中的 for 循环不同的是,for 标签只能一次性地遍历完列表中的元素,不能中断(break),也不能跳过(continue)。
def test01_for(request): #使用嵌套for标签依次遍历列表取值 website=Template(""" {% for course in list01 %} <div> {% for coursename in course %} <p><b>{{ coursename }}</b></p> {% endfor %} </div> {% endfor %} """) webname=Context({'list01':[['Django','Flask','Tornado'],['c语言中网','Django官网','Pytho官网']]}) html=website.render(webname) return HttpResponse(html)然后为其配置路由映射关系,最后访问 127.0.0.1/test01_for 获得相应页面如下所示:
图3:for 循环嵌套使用
forloop
,我们可以访问这个变量的属性从而获取 for 循环迭代过程中的一些信息,比如 forloop.first,它的返回值是一个布尔值,当 for 循环迭代第一个元素的时候返回 True, 若有其余元素则返回的是 False。forloop 的属性主要有以下几个:变量 | 描述 |
---|---|
forloop.counter | 用来计数,查看当前迭代第几个元素(从1开始索引) |
forloop.counter0 | 用来计数,查看当前迭代第几个元素(从0开始索引) |
forloop.revcounter | 表示当前循环中剩余的未被迭代的元素数量(从1开始索引) |
forloop.revcounter0 | 表示当前循环中剩余的未被迭代的元素数量(从0开始索引) |
forloop.first | 如果当前迭代的是第一个元素,则为True |
forloop.last | 如果当前迭代的是最后一个元素,则为True |
forloop.parentloop | 在嵌套循环中,用来引用外层循环的 forloop |
def test_forloop(request): a=Template(""" {% for item in lists %} <div> <p><b>{{ forloop.counter }}:{{ item }}</b></p> </div> {% endfor %} """) b=Context({'lists':['c语言中网','Django官网','Pytho官网']}) html=a.render(b) return HttpResponse(html) #数字与元素以 1:'c语言中文网' 的形式出现最终效果如图所示:
图4:forloop 属性使用方法
提示:forloop 变量只能在 for 与 endfor 之间使用,它的 first 和 last 属性,可以通过 if 标签对当前迭代元素做逻辑判断,而像 counter 属性,常用于调试程序。
本文链接:http://task.lmcjl.com/news/16052.html