前言

有些标签类似这样: {% 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.counter: 表示循环的次数。这个属性的值从 1 开始,因此第一次循环时,forloop.counter 等于 1 。
  • forloop.counter0: forloop.counter0 与 forloop.counter 类似,不过是从零开始的。第一次循环时,其值为 0 。
  • forloop.revcounter:forloop.revcounter的值是一个整数,表示循环中剩余的元素数量。第一次循环时, forloop.revcounter 的值是序列中要遍历的元素总数。最后一次循环时, forloop.revcounter的值为 1 。
  • forloop.revcounter0:forloop.revcounter0 与 forloop.revcounter类似,不过索引是基于零的。第一次循环时, forloop.revcounter0的值是序列中元素数量减去一。最后一次循环时, forloop.revcounter0 的值为 0 。
  • forloop.first:forloop.first 是个布尔值,第一次循环时为 True 。需要特殊处理第一个元素时很方便
  • forloop.last:forloop.last是个布尔值,最后一次循环时为True 。经常用它在一组链接之间放置管道符号:
  • forloop.parentloop:在嵌套的循环中, forloop.parentloop引用父级循环的 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>

显示效果

最新文章

  1. Mysql创建用户并授权
  2. js获取浏览器当前窗口的高度长度
  3. SharePoint 新特性及安装需知
  4. svn搭建以及可能遇到的问题解决方案
  5. [优先队列]HDOJ5360 Hiking
  6. C#实现JSON序列化与反序列化介绍
  7. 嵌入式linux平台搭建
  8. Category类别
  9. Bootstrap3基础 栅格系统 col-md-push/pull 向左、右的浮动偏移
  10. iOS模拟器:Undefined symbols for architecture x86_64
  11. hostapd修改beacon帧和probe response帧
  12. Ubuntu apt-get彻底卸载软件包【转】
  13. View.requestLayout
  14. day_5.18_py总结
  15. 阿里云ECS利用密钥对ssh登录服务器
  16. C#之数据类型学习
  17. ASP .Net Core系统部署到 CentOS7 64 具体方案
  18. 如何防止app接口被别人调用
  19. React实例入门教程(1)基础API,JSX语法--hello world
  20. html+css 布局篇

热门文章

  1. MHA+keepalived集群环境搭建
  2. ASP.NET Core WebApi基于Redis实现Token接口安全认证
  3. rent a apartment
  4. Semaphore源码分析
  5. PyInstaller把Python脚本打包成可执行程序教程
  6. 030 ElasticSearch----全文检索技术05---基础知识详解03-聚合
  7. element-ui复杂表单校验
  8. python+requests+unittest 接口ddt测试
  9. 通过Nginx为网站配置二级域名
  10. 2019 游族网络java面试笔试题 (含面试题解析)