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.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>
显示效果
python测试开发django-68.templates模板标签{% for %}的更多相关文章
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- Python测试开发-创建模态框及保存数据
Python测试开发-创建模态框及保存数据 原创: fin 测试开发社区 前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...
- 《Python测试开发技术栈—巴哥职场进化记》—前言
写在前面 今年从4月份开始写一本讲Python测试开发技术栈的书,主要有两个目的,第一是将自己掌握的一些内容分享给大家,第二是希望自己能系统的梳理和学习Python相关的技术栈.当时我本来打算以故事体 ...
- 《Python测试开发技术栈—巴哥职场进化记》—软件测试工程师“兵器库”
上文<Python测试开发技术栈-巴哥职场进化记>-初来乍到,请多关照 我们介绍了巴哥入职后见到了自己的导师华哥,第一次参加团队站会,认识了团队中的开发小哥哥和产品小姐姐以及吃到了公司的加 ...
- python测试开发django-197.django-celery-beat 定时任务
前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...
随机推荐
- 【技术博客】移动端的点击事件与Sticky Hover问题
目录 移动端的点击事件与Sticky Hover问题 TL;DR 前言 问题描述 背景 实现方式 问题 关于移动端浏览器的点击事件 初次发现问题后各种解决尝试:从点击事件本身下手 cursor: po ...
- python3.5-ssh免输入密码过程
ssh远程批量执行命令要输密码很蛋疼,虽然有很多种方式,大概有4.5种.原理基本类似. 这里我就讲一个python的模拟登陆 模块 此刻的时间是:2015年11月19日11:11:47 ...
- 出现Strict Standards: Only variables should be passed by reference in的解决方法
出现Strict Standards: Only variables should be passed by reference in的解决方法 代码报错: <br /><b> ...
- Windows Server实例防火墙策略的配置方法
概述 本文介绍在Windows Server实例中,如何配置防火墙策略的方法. 详细描述 配置Windows Server版本的防火墙功能方法,参考如下步骤. 提示:此处以Windows Server ...
- 修改mysql存储过程或函数的定义着
以root用户登录mysql控制台 (1)首先查询 mysql> select definer from mysql.proc; (2)然后根据条件进行更新 update mysql.proc ...
- 20190802_Nginx基础
20190802_Nginx基础 文章主要内容: 关于中间件比较通俗易懂的解释 Nginx简述 Nginx环境配置以及安装 Nginx的目录和配置语法 Nginx日志_log_format Nginx ...
- ubuntu16安装python3
正常情况下,你安装好ubuntu16.04版本之后,系统会自带 python2.7版本,如果需要下载新版本的python3.5,就需要进行更新.下面给出具体教程: 1.首先在ubuntu的终端tern ...
- PyInstaller把Python脚本打包成可执行程序教程
一.说明 一直以来都有把.py文件打包成.exe文件的想法,但总是不够强烈,每次拖着拖着就淡忘了. 昨天帮硬件部门的同事写了个脚本,然后今天下午的时候,他问有没有办法把脚本打包成可执行文件,这样方便以 ...
- 使用预编译库PREBUILT LIBRARY官方说明
使用预编译库 NDK 支持使用预编译库(同时支持静态库和共享库).此功能有以下两个主要用例: 向第三方 NDK 开发者分发您自己的库(而不分发您的源代码). 使用您自己的库的预编译版本来提升编译速度. ...
- Java学习:数据类型转换注意事项
数据类型的转换 当数据类型不一样时,将会发生数据类型转换. 自动类型转换(隐式) 1.特点 :代码不需要进行特殊处理,自动完成. 2.规则 :数据范围从小到大. //左边是long类型,右边是默认的i ...