2019独角兽企业重金招聘Python工程师标准>>>

{% for %} 允许我们在一个序列上迭代。与Python的for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列
而X是在每一个特定的循环中使用的变量名称。每一次循环中,模板系统会渲染在{% for %} and {% endfor %} 中的所有内
容。
例如,给定一个运动员列表athlete_list 变量,我们可以使用下面的代码来显示这个列表:

<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>

给标签增加一个reversed 使得该列表被反向迭代:

{% for athlete in athlete_list reversed %}
...
{% endfor %}

可以嵌套使用{% for %} 标签:

{% for country in countries %}
<h1>{{ country.name }}</h1>
<ul>{% for city in country.city_list %}
<li>{{ city }}</li>
{% endfor %}
</ul>
{% endfor %}

Django不支持退出循环操作。如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项目。同
理,Django也不支持continue语句,我们无法让当前迭代操作跳回到循环头部。
{% for %} 标签在循环中设置了一个特殊的 forloop 模板变量。这个变量能提供一些当前循环进展的信息:
forloop.counter 总是一个表示当前循环的执行次数的整数计数器。这个计数器是从1开始的,
所以在第一次循环时forloop.counter 将会被设置为1。例子如下:

{% for item in todo_list %}
<p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}

forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。第一次执行循环时这个变量会被设置为0。
forloop.revcounter 是表示循环中剩余项的整型变量。在循环初次执行时 forloop.revcounter 将被设置为序列中项的总
数。最后一次循环执行中,这个变量将被置1。
forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变量会被置为序
列的项的个数减1。在最后一次迭代时,该变量为0。
forloop.first 是一个布尔值。在第一次执行循环时该变量为True,在下面的情形中这个变量是很有用的。

{% for object in objects %}
{% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
{{ object }}
</li>
{% endfor %}

forloop.last 是一个布尔值;在最后一次执行循环时被置为True。一个常见的用法是在一系列的链接之间放置管道符(|)

{% for link in links %}{{ link }}{% if not forloop.last %} | {% endif %}{% endfor %}

The above template code might output something like this::
Link1 | Link2 | Link3 | Link4
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 就不可访问了。
Context和forloop变量
在一个{% for %} 块中,已存在的变量会被移除,以避免 forloop 变量被覆盖。Django会把这个变量移动到
forloop.parentloop 中。通常我们不用担心这个问题,但是一旦我们在模板中定义了 forloop 这个变量(当然我们反对这
样做),在{% for %} 块中它会在 forloop.parentloop 被重新命名。

转载于:https://my.oschina.net/u/1458120/blog/551136

django 模板里面for循环常用的方法相关推荐

  1. django 模板两次for循环_Django模板之基本的 for 循环 和 List内容的显示方式

    Django模板之基本的 for 循环 和 List内容的显示方式 发布时间:2020-08-31 07:29:20 来源:脚本之家 阅读:116 工程结构 views.py def home(req ...

  2. Beetl模板 以@为定位符常用的标签和方法

    Beetl模板 以@为定位符常用的标签和方法 1.如何使用layout @layout("/common/_container.html",{pluginis:["ztr ...

  3. python template languages_更换Django默认的模板引擎为jinja2的实现方法

    本机环境 操作系统:fedora24 python版本:3.5 Django版本:1.11.1 jinja2版本:2.9.6 为何要更换 DTL 先来谈谈Django的模板引擎,找了下,并没有一个确定 ...

  4. 常用的循环遍历的方法---for循环、forEach循环、$(‘‘).each()、$.each()

    1.for循环 <script>var arr = ['nick','freddy','mike','james']; for(var index = 0, len=arr.length; ...

  5. Django 模板4.1

    模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视 ...

  6. Django模板语言(译)

    原文地址:https://docs.djangoproject.com/zh-hans/2.1/ref/templates/language/ 翻译日期:2019年3月8日-2019年3月9日 by: ...

  7. Django 模板语言 标签

    前言:django的模板语法基本和flask的jinja2基本一样.下面比较一下两个模板语法的区别. ------深度变量的查找(万能的句点号) 在 Django 模板中遍历复杂数据结构的关键是句点字 ...

  8. django模板系统(上)

    filters 过滤 default 替代作用 filesizeformat 格式化为人类可读 add 给变量加参数 lower 小写 upper 大写 title 标题 ljust 左对齐 rjus ...

  9. Django模板语言相关内容

    Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言 ...

最新文章

  1. import csv into iaddressbook
  2. java 响应 请求参数_spring基础----请求与响应的参数(一)
  3. Android Flash分区大小查看
  4. NET命令的基本用法
  5. 再也不用为word 中表达式的上标和下标发愁了
  6. 解决 django 中 mysql gone away 的问题
  7. python中列表的嵌套是指列表的元素是另一个列表_Python实现嵌套列表去重方法示例...
  8. 在Spinnaker中创建微服务部署管道
  9. LayaBox---TypeScript---首次接触遇到的问题
  10. html页面加文字水印
  11. 现代公司制度的法理学基础 (贾登勋 王勇)
  12. KMPlayer播放mkv视频不出声音的解决办法
  13. 魔兽服务器维护一般要多少时间,《魔兽世界》魔兽世界维护时间心得
  14. Oracle迁移到mysql字符集_oracle数据库字符集characterset迁移及变更系列一
  15. 关于RedisPool配置参数
  16. 文本每三行合并成一行
  17. X1 Carbon wifi 8260 无线网卡驱动安装 backports
  18. matlab求解LP问题
  19. 学习云计算技术前景在哪里?云计算技术发展趋势
  20. 如何停用计算机服务,如何彻底禁用电脑中的迅雷服务XLservicePlatform

热门文章

  1. pandas模块学习笔记2--基本功能
  2. 《Docker技术入门与实战》——2.4 本章小结
  3. ZigZag 与 反ZigZag编码
  4. Python 面试总结
  5. 关于new String(new byte[]{0})
  6. Cloudify — 部署 OpenStack 基础设施
  7. Go 语言编程 — viper 配置管理工具
  8. 简易的 Linux 流量实时监控工具 watch+ifstat
  9. Linux — OpenSSH 安全的远程连接
  10. java jdk动态代理学习记录