转:django模板标签{% for %}的使用(含forloop用法)
django模板标签{% for %}的使用(含forloop用法)
在django
模板标签中,{% for %}
标签用于迭代序列中的各个元素。
与 Python 的 for 语句类似,语法是 for X in Y
,其中 Y 是要迭代的序列, X 是单次循环中使用的变量。每次迭代时,模板系统会渲染 {% for %}
和 {% endfor %}
之间的内容。
1. 可以使用下述模板显示 athlete_list 变量中的运动员:
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
2. 加入 reversed 标签,反向迭代列表
{% for athlete in athlete_list reversed %}
…
{% endfor %}
3. 对二元组解包
{% for x, y in points %}
<p>There is a point at {{ x }},{{ y }}</p>
{% endfor %}
4. 字典解包
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}
5. 判断列表是否为空,为空就显示特定内容
第一种使用{% if %}
标签
{% if athlete_list %}
{% for athlete in athlete_list %}
<p>{{ athlete.name }}</p>
{% endfor %}
{% else %}
<p>There are no athletes. Only computer programmers.</p>
{% endif %}
第二种使用{% empty %}
标签
{% for athlete in athlete_list %}
<p>{{ athlete.name }}</p>
{% empty %}
<p>There are no athletes. Only computer programmers.</p>
{% endfor %}
5. {% for %}
标签内部模板变量forloop
在{% for %}
循环内部,可以访问一个名为forloop
的模板变量。这个变量有若干属性,通过它们可以获知循环进程的一些信息。
5.1 forloop.counter
forloop.counter
的值是一个整数,表示循环的次数。这个属性的值从 1 开始,因此第一次循环时,forloop.counter 等于 1 。
{% for item in todo_list %}
<p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}
5.2 forloop.counter0
forloop.counter0
与 forloop.counter
类似,不过是从零开始的。第一次循环时,其值为 0 。
5.3 forloop.revcounter
forloop.revcounter
的值是一个整数,表示循环中剩余的元素数量。第一次循环时, forloop.revcounter
的值是序列中要遍历的元素总数。最后一次循环时, forloop.revcounter
的值为 1 。
5.4 forloop.revcounter0
forloop.revcounter0
与 forloop.revcounter
类似,不过索引是基于零的。第一次循环时, forloop.revcounter0
的值是序列中元素数量减去一。最后一次循环时, forloop.revcounter0
的值为 0 。
5.5 forloop.first
forloop.first
是个布尔值,第一次循环时为 True 。需要特殊处理第一个元素时很方便:
{% for object in objects %}
{% if forloop.first %}
<li class="first">
{% else %}
<li>
{% endif %}
{{ object }}
</li>
{% endfor %}
5.6 forloop.last
forloop.last
是个布尔值,最后一次循环时为True
。经常用它在一组链接之间放置管道符号:
{% for link in links %}
{{ link }}{% if not forloop.last %} | {% endif %}
{% endfor %}
上述模板代码的输出可能是:
Link1 | Link2 | Link3 | Link4
此外,还经常用它在一组单词之间放置逗号:
<p>Favorite places:</p>
{% for p in places %}
{{ p }}{% if not forloop.last %}, {% endif %}
{% endfor %}
5.7 forloop.parentloop
在嵌套的循环中, forloop.parentloop
引用父级循环的 forloop
对象。下面举个例子:
{% for country in countries %}
<table>
{% for city in country.city_list %}
<tr>
<td>Country #{{ forloop.parentloop.counter }}</td>
<td>City #{{ forloop.counter }}</td>
<td>{{ city }}</td>
</tr>
{% endfor %}
</table>
{% endfor %}
小贴士
forloop
变量只在循环内部可用。模板解析器遇到{% endfor %}
时,forloop
随之消失。
上下文和forloop
变量
在{% for %}
块中,现有变量会让位,防止覆盖forloop
变量。Django
把移动的上下文放到
forloop.parentloop
中。通常,你无须担心,但是如果有名为forloop
的模板变量(不建议这
么做),在{% for %}
块中会重命名为forloop.parentloop
。
转:django模板标签{% for %}的使用(含forloop用法)的更多相关文章
- Django 模板标签[转]
Django 模板标签if/else 标签 基本语法格式如下: {% if condition %} ... display{% endif %} 或者: {% if condition1 % ...
- 解决AngularJS和Django模板标签冲突问题
原地址 Django和AngularJS在模板中使用同样的符号来引用变量,例如 {{variable_name}}. 有两种解决办法,各有利弊.一个修改AngularJS模板语法,另一个使用Djang ...
- Django 学习第四天——Django 模板标签
一.模板标签: 作用:标签在渲染的过程中提供任意的逻辑:例如 if for...in... 等 标签语法:由 {% %} 来定义的:例如:{% tag %}xxx{% endtag %} 常用标签: ...
- python的Web框架,Django模板标签及模板的继承
模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html ...
- Django模板标签
一.模板标签 1.模板标签是在模板中运用python语言的实现,如for循环,if语句 2.模板标签的运用 2.1在teacher模板下创建students_list模板, 在teacher视图中国创 ...
- django模板语言循环字典,及forloop
views: from django.shortcuts import render,redirect from django.shortcuts import HttpResponse # Crea ...
- Django 学习笔记(五)模板标签
关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...
- Django之博客系统:自定义模板标签
Django提供了很多内置的模板标签比如{% if %}或者{% block %}Django也允许你创建自己的模板标签(template tags)来执行自定义的动作.当你需要在你的模板中添加功能而 ...
- Django——4 模板标签 模板的继承与引用
Django 模板标签 常用标签 模板的继承与引用 模板标签 标签在渲染的过程中提供任意的逻辑 标签语法: 由%}和 {% 来定义的,例如:{%tag%} {%endtag%} 这个定义是刻意模糊的. ...
随机推荐
- DSO论文解读
dso 1.1. Motivation 本文提出的单目视觉测距法的直接和稀疏公式是出于以下考虑因素; (1)直接: 关键点的主要优点之一是它们能够为使用现成的商品相机拍摄的图像中存在的光度和几何失真提 ...
- [No0000178]改善C#程序的建议1:非用ICloneable不可的理由
好吧,我承认,这是一个反标题,实际的情况是:我找不到一个非用ICloneable不可的理由.事实上,接口ICloneable还会带来误解,因为它只有一个Clone方法. 我们都知道,对象的拷贝分为:浅 ...
- React组件的State
React组件的State 1.正确定义State React把组件看成一个状态机.通过与用户的交互,实现不同状态,然后渲染UI,让用户界面和数据保持一致.组件的任何UI改变,都可以从State的变化 ...
- sharepoint webapp 部署注意点
只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 // 节中包括 System.Web.SessionSta ...
- (1.7)mysql profiles分析
mysql profiles分析 作用:记录会话查询SQL所用时间 1.开启 2.使用 [2.1]先使用一个查询 [2.2]然后再运行 show profiles; [2.3]查看执行过程中每个状态和 ...
- Windows server 2016 支持容器 ,安装docker 搭建Ubuntu+hadoop (docker为服务器)
一.Windows server 2016 是肯定要安装的, 关于如何启动容器功能那就是控制面板中增加与删除里面的启用了,很多地方可以百度到 二. 安装Ubuntu hadoop 等 待续 注意: ...
- mysql 5.7配置项最详细的解释
配置样例 首先提供一个我使用的配置样例 [client] #password=88888888 socket=/data/var/mysql/mysql.sock [mysqld_safe] pid- ...
- url映射
#include<iostream> #include<algorithm> #include<ctype.h> #include<string> #i ...
- 前端框架之Vue(10)-全家桶简单使用实例
vue-router官方文档 vuex官方文档 安装 npm install vue-router --save 使用实例 vue-router初使用(webpack-simple模板) 1.切换到指 ...
- eclipse 优化
1.取消验证 windows–>perferences–>validation 把 除了manual 下面的全部点掉,build下只留 classpath dependency Valid ...