编程语言
首页 > 编程语言> > python测试开发django-68.templates模板标签{% for %}

python测试开发django-68.templates模板标签{% for %}

作者:互联网

前言

有些标签类似这样: {% tag %} ,需要开始和结束标签 例如:{% tag %} ...标签 内容 ... {% endtag %},一般用于循环列表对象输出内容。

for 标签

{% for %} 允许我们在一个序列上迭代。与Python的 for 语句的情形类似,循环语法是 for item in iterator。
每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。

比如写个模板navigationbar.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{% for name in name_list %}

<h1>
    <span>{{ name.type }}</span>
</h1>
{% endfor %}

</body>
</html>
views视图

视图函数把列表的内容填充到模板上

from django.shortcuts import render
# 上海悠悠,QQ交流群:750815713

def navlist(request):
    name_list = [
        {
            "type": "科普读物",
            "value": ["宇宙知识", "百科知识", "科学世界", "生物世界"]
        },
        {
            "type": "计算机/网络",
            "value": ["Java", "Python", "C语言"]
        },
        {
            "type": "建筑",
            "value": ["标准/规范", "室内设计", "建筑科学", "建筑文化"]
        }
    ]

    context = {"name_list": name_list}

    return render(request, "navigationbar.html", context=context)

运行后显示效果

empty标签

for ... empty ...enddor:for标签带有一个可选的{% empty %}从句,以便再给出的组是空的或者没有被找到时,给个默认值

<body>

{% for name in name_list %}

<h1>
    <span>{{ name.type }}</span>
</h1>
{% empty %}
    <span> 无标签 </span>
{% endfor %}

</body>

当name_list的值为空时,就会显示empty值:无标签

from django.shortcuts import render

def navlist(request):
    context = {"name_list":[]}
    return render(request, "navigationbar.html", context=context)
内部模板变量forloop

在{% for %}循环内部,可以访问一个名为forloop的模板变量。这个变量有若干属性,通过它们可以获知循环进程的一些信息。

以 forloop.last 为例,在每个链接后放管道符号,最后一个不用放

<body>
{% for name in name_list %}

<h1>
    <span>{{ name.type }}</span>
</h1>
    {% for n in name.value %}
        <span>
        {{ n }}{% if not forloop.last %} | {% endif %}
        </span>
    {% endfor %}

{% empty %}
    <span> 无标签 </span>
{% endfor %}

</body>

显示效果

标签:templates,forloop,name,python,标签,list,django,循环,context
来源: https://blog.51cto.com/u_15249893/2848153