027:for标签使用详解
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>
027:for标签使用详解的更多相关文章
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- HTML标签----图文详解(二)
HTML标签超详细的图文演示再来一波~~~ 如果还没有看过昨天的福利的,那可要抓紧喽,传送门:HTML标签----图文详解 本文主要内容 列表标签 表格标签 框架标签及内嵌框架<iframe&g ...
- HTML标签----图文详解
国庆节快乐,还在加班的童鞋,良辰必有重谢! 本文主要内容 头标签 排版标签:<p> <br> <hr> <center> ...
- Struts标签库详解【3】
struts2标签库详解 要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri= ...
- Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- 【jsp】JSTL标签大全详解
一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...
- POM标签大全详解
父(Super) POM <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "htt ...
- 029:url标签使用详解
url标签使用详解: 在模版中,我们经常要写一些 url ,比如某个 a 标签中需要定义 href 属性.当然如果通过硬编码的方式直接将这个 url 写死在里面也是可以的.但是这样对于以后项目维护可能 ...
- 028:with标签使用详解
with标签使用详解: 1.在模板中享用使用变量,可以通过 with 语句实现: 2.with 有两种用法,具体情况如下 ( 包括注意事项 ) : index.html: <p>wi ...
随机推荐
- leetcode 52 N皇后问题 II
51的简化版,省去根据排列话棋盘的工作,直接计数,代码: class Solution { public: int totalNQueens(int n) { ; vector<); dfs(n ...
- mysql转化时间戳毫秒到秒
其实我感觉都不值得写一篇随笔的,但是呢,我就是想写 其实就是截取毫秒时间戳的前十位就是我们是秒时间戳啦 update 表 set 表字段 = substr(表字段,1,10) 好简单 嫌弃中
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
今天执行mysql操作的时候出现了错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run ...
- charles_02_模拟弱网测试
前言 用户使用app的场景是多变的,不一定稳定在WiFi或者4G网络下.大多数用户会在地铁.电梯等弱网情况下使用app,这些弱网情况下app常会出现一些数据丢失.闪退.页面展示不友好等情况.在测试过程 ...
- 1 Python 新建项目
1 新建项目->新建Python文件 2导入package 库文件 3 import 类似using #include 4 写完代码编译 默认debug的对象是第一个创建的py文件,后续写的文件 ...
- <每日一题> Day3:CodeForces-1141B.MaximalContinuousRest(简单题)
题目链接 参考代码: #include <iostream> #include <algorithm> using namespace std; + ; int value[m ...
- Java中的容器(集合)
1.Java常用容器:List,Set,Map List: 继承了Collection接口(public interface List<E> extends Collection<E ...
- 最好用的 Kafka Json Logger Java客户端,赶紧尝试一下
最好用的 Kafka Json Logger Java客户端. slf4j4json 最好用的 Kafka Json Logger 库:不尝试一下可惜了! Description 一款为 Kafka ...
- 解决pip源问题 安装不了第三方库问题
1. 参考链接: https://www.biaodianfu.com/python-pip.html http://blog.csdn.net/u012450329/article/details/ ...
- vue v-model 的使用
Vue的核心特性之一是双向绑定,vue的响应式原理是实现了数据->视图 v-bind只能实现数据的单向绑定 ,从M自动绑定到V 使用v-model 可以实现表单元素的双向绑定,且只能应用到表单元 ...