for标签使用详解:

for...in... 标签: for...in... 类似于 Python 中的 for...in... 。可以遍历列表、元组、字符串、字典等一切可以遍历的对象。示例代码如下:

{% for person in persons %}
<p>{{ person.name }}</p>
{% endfor %}

如果想要反向遍历,那么在遍历的时候就加上一个 reversed 。示例代码如下:

{% for person in persons reversed %}
<p>{{ person.name }}</p>
{% endfor %}

遍历字典的时候,需要使用 items 、 keys 和 values 等方法。在 DTL 中,执行一个方法不能使用圆括号的形式。遍历字典示例代码如下:

{% for key,value in person.items %}
<p>key:{{ key }}</p>
<p>value:{{ value }}</p>
{% endfor %}

在 for 循环中, DTL 提供了一些变量可供使用。这些变量如下:

  • forloop.counter :当前循环的下标。以1作为起始值。
  • forloop.counter0 :当前循环的下标。以0作为起始值。
  • forloop.revcounter :当前循环的反向下标值。比如列表有5个元素,那么第一次遍历这个属性是等于5,第二次是4,以此类推。并且是以1作为最后一个元素的下标。
  • forloop.revcounter0 :类似于forloop.revcounter。不同的是最后一个元素的下标是从0开始。
  • forloop.first :是否是第一次遍历。
  • forloop.last :是否是最后一次遍历。
  • forloop.parentloop :如果有多个循环嵌套,那么这个属性代表的是上一级的for循环。

3. for...in...empty 标签:这个标签使用跟 for...in... 是一样的,只不过是在遍历的对象如果没有元素的情况下,会执行 empty 中的内容。示例代码如下:

{% for person in persons %}
<li>{{ person }}</li>
{% empty %}
<li>暂时还没有任何人</li>
{% endfor %}

实例代码如下:

views.py:

from django.shortcuts import render

# Create your views here.
# my_dict = {"name": 'tom'}
# my_list = ["jerry",]
# my_tupe = ("alice",)
my_dict = {'books':[
{"name":'红楼梦','author':'曹雪芹',"price":150},
{"name":'水浒传','author':'罗贯中',"price":140},
{"name":'三国演义','author':'施耐庵',"price":160},
{"name":'西游记','author':'吴承恩',"price":130},
],
# "comment": ['内容不错', "真的假的啊"],
"comment": [],
} def index(request):
return render(request, 'index.html', context=my_dict)
# return render(request, 'index.html', context={'age': 20})
# return render(request, 'index.html', context={'username': "jack_cheng",
# 'list1':my_dict,
# 'list2':my_list,
# 'list3':my_tupe})

url.py:

from django.contrib import admin
from django.urls import path
from front import views
urlpatterns = [
path('admin/', admin.site.urls),
path('front/', views.index),
]

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#<p>字符串:{{ username }}</p>#}
{#<p>字典:{{ list1.name }}</p>#}
{#<p>列表:{{ list2.0 }}</p>#}
{#<p>元组:{{ list3.0 }}</p>#}
{#{% if age < 18 %}#}
{# <p>您是未成年人</p>#}
{#{% elif age >= 18 and age < 80 %}#}
{# <p>您是成年人</p>#}
{#{% else %}#}
{# <p>您是老年人</p>#}
{#{% endif %}#}
<table>
<thead>
<tr>
<td>序号</td>
<td>作者</td>
<td>书名</td>
<td>价格</td>
</tr>
</thead>
<tbody>
{% for book in books %}
{% if forloop.first %}
<tr style="background: red;">
{% elif forloop.last %}
<tr style="background: pink">
{% else %}
<tr>
{% endif %}
<td>{{ forloop.counter }}</td>
<td>{{ book.name }}</td>
<td>{{ book.author }}</td>
<td>{{ book.price }}</td>
</tr>
{% endfor %} </tbody>
</table> {% for item in comment %}
<li>{{ item }}</li>
{% empty %}
<li>抱歉内容为空</li>
{% endfor %} </body>
</html>

最新文章

  1. Excel 实用技巧之一
  2. SSI指令
  3. ORM系列之一:Dos.ORM
  4. Visual Studio 2015简体中文企业版/专业版下载+有效激活密钥
  5. 点亮一个led灯
  6. gopush-cluster 架构
  7. Azure 上为Liunx VM 挂载File类型的存储。
  8. [记录]使用setTimeout实现不同时间进行切换文本的颜色
  9. GET请求和POST请求
  10. 堆和栈的区别【zz】
  11. python学习之路-9 socket网络编程
  12. iOS开发面试题整理 (一)
  13. 框架应用:Spring framework (五) - Spring MVC技术
  14. Linux系统--命令行安装weblogic10.3.6
  15. php 中self,this的区别和实地操作
  16. django后台管理-ModelAdmin对象
  17. vue 的父组件和子组件互相获取数据和方法
  18. EF 数据查询效率对比
  19. 鬼知道是啥系列之——STL(lower_bound(),upper_bound() )
  20. ny20 吝啬的国度

热门文章

  1. The import org.apache.hadoop.mapreduce cannot be resolved
  2. 关于问题的四个单词区别: question problem matter issue
  3. 数据存储-cookie、sessionstorage、localstorage
  4. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_2_字符串的构造方法和直接创建
  5. windows10下安装docker报错:error during connect
  6. centos 7 lnmp环境编译安装zabbix-3.4.14
  7. 【ABAP系列】SAP ABAP 优化LOOP循环的一点点建议
  8. mooc-IDEA 收藏位置和文件--003
  9. 20191105 《Spring5高级编程》笔记-第12章
  10. Console.Out 属性和 XmlDocument.Save 方法 (String)