flask第二十六篇——模板【控制语句】【2】
如果你也在学flask,就请加船长的公众号:自动化测试实战
我们先补充一下for循环的知识,我们之前说过,flask是由Jinja2+sqlAlchemy+werkzeug组成的,我们现在学的控制语句就属于Jinja的知识了。
在Jinja2中的for循环包含以下变量,用来获取当前遍历的状态:
| 变量 | 描述 |
|---|---|
| loop.index | 当前迭代的索引(从1开始) |
| loop.index0 | 当前迭代的索引(从0开始) |
| loop.first | 是否是第一次迭代,返回True/False |
| loop.last | 是否是最后一次迭代,返回True/False |
| loop.length | 序列的长度 |
比如我们判断如果是最后一次迭代,那么就把那一行标红,就可以这么写:
<h3>遍历中的变量</h3>
<table>
<thead>
<th>姓名</th>
<th>年龄</th>
</thead>
<tbody>
{% for user in users %}
<p>{{ loop.index }}</p>
{% if loop.last %}
<tr style="background: firebrick;">
{% else %}
<tr>
{% endif %}
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
</tr> {% endfor %} </tbody>
</table>
此外,在flask中,是没有continue和break来中断for循环的,那我们要停止for循环该怎么办呢?我们就需要借助if进行判断了,比如下面的代码,我先循环整个users列表,然后判断,如果name是Warren,name就用表格打印出姓名和年龄:
# coding: utf-8 from flask import Flask, render_template app = Flask(__name__) # type: Flask
app.debug = True @app.route('/')
def login():
context = {
"users": [
{
"name": "Warren",
"age": 18
},
{
"name": "Captain",
"age": 20
}
],
"groups": {
"math": "perfect",
"Chinese": "Great"
}
} return render_template('index.html', **context) if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>控制语句</title>
</head>
<body>
{# 如果姓名name是Warren,就打印名字,否则打印其他信息 #}
{% if users[0].name == "Warren" %}
<p>{{ users[0].name }}</p>
<p>用户名是Warren</p>
{% else %}
<p>用户名不是Warren</p>
{% endif %} {# for循环 #}
<h3>遍历列表</h3>
<table>
<thead>
<th>姓名</th>
<th>年龄</th>
</thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
</tr> {% endfor %}
</tbody>
</table> <h3>遍历字典</h3>
{% for key, value in groups.items() %}
<p>key: {{ key }};value: {{ value }}</p>
{% endfor %} <h3>遍历中的变量</h3>
<table>
<thead>
<th>姓名</th>
<th>年龄</th>
</thead>
<tbody>
{% for user in users %}
<p>{{ loop.index }}</p>
{% if loop.last %}
<tr style="background: firebrick;">
{% else %}
<tr>
{% endif %}
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
</tr> {% endfor %} </tbody>
</table> <h3>中途断开for循环</h3>
<table>
<thead>
<th>姓名</th>
<th>年龄</th>
</thead>
<tbody>
{% for user in users if user.name == 'Warren' %}
<tr>
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
</tr>
{% endfor %}
</tbody>
</table> </body>
</html>
最后执行代码,可以看到:
大家需要自己动手写一下,这样才能记得深刻。
今天我们给大家留个作业,就是用学的for循环写一个九九乘法表,明天我们会公布答案,大家可以自己试一下,看看自己学的怎么样~~
如果觉得有帮助,别忘了动动小手,点个赞哦~~
flask第二十六篇——模板【控制语句】【2】的更多相关文章
- flask第二十二篇——模板【4】过滤器
请关注微信公众号:自动化测试实战 先来教大家一个pycharm设置默认模板的方法.我们每次新建模板或者平时写代码打开以后可能都要重复写# coding: utf-8这些代码,其实我们可以设置好模板,让 ...
- flask第二十四篇——模板【6】自定义过滤器
请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...
- flask第二十五篇——控制语句
有兴趣的请加船长公众号:自动化测试实战 先和大家强调一个发邮件的问题 # coding: utf-8 import smtplib from email.mime.text import MIMETe ...
- flask第十九篇——模板【3】
请关注微信公众号:自动化测试实战 今天我们继续模板的知识,现在我们增加字典的复杂度,这个时候在render_template第二个参数可以传**title,以后我们会用**context代替原来的ti ...
- flask第十八篇——模板【2】
请关注公众号:自动化测试实战 上一节我们介绍了模板的基本使用方法,现在我们想一个问题,如果把index.html放到template文件夹下面的文件夹该怎么办呢?其实很容易,当文件夹结构如下图所示时: ...
- 第二十六篇:两个SOUI新控件 ---- SListView和SComboView(借用Andorid的设计)
SOUI原来实现的SListBoxEx的效率一直是我对SOUI不太满意的地方.包括后来网友实现的SListCtrlEx. 这类控件为每一个列表项创建一个SWindow来容纳数据,当数据量比较大(100 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第十六篇 Flask-Migrate
终于到了Flask-Migrate,之前在学习Flask-SQLAlchemy的时候,有的同学就提过类似的问题,Flask支持 makemigration / migrate 吗? 答案在这里该诉你, ...
- 第二十六篇 jQuery 学习8 遍历-父亲兄弟子孙元素
jQuery 学习8 遍历-父亲兄弟子孙元素 jQuery遍历,可以理解为“移动”,使用“移动”还获取其他的元素. 什么意思呢?老师举一个例子: 班上30位同学,我是新来负责教这个班学生的老师 ...
- 第二十六篇-单击事件、Toast(提示框信息)
单击事件有3种方法: 第一种: layout.xml <?xml version="1.0" encoding="utf-8"?> <Line ...
随机推荐
- php 用户向微信发送信息
1:制作微信菜单栏 <?phpheader("Content-type: text/html; charset=utf-8");function request_post($ ...
- Python3:爬取新浪、网易、今日头条、UC四大网站新闻标题及内容
Python3:爬取新浪.网易.今日头条.UC四大网站新闻标题及内容 以爬取相应网站的社会新闻内容为例: 一.新浪: 新浪网的新闻比较好爬取,我是用BeautifulSoup直接解析的,它并没有使用J ...
- 20145314郑凯杰《网络对抗技术》实验5 MSF基础应用
20145314郑凯杰<网络对抗技术>实验5 MSF基础应用 1.0 MS08_067安全漏洞 1.1 实验目标 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单 ...
- 20145326 《Java程序设计》第6周学习总结
20145326 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 一.使用InputStream与OutputStream 1.串流设计的概念 想活用输入/输出API,一定要 ...
- Zynq-Linux移植学习笔记之十-u-boot网络配置
在zynq开发板zc706上,网络通路由下面三个设备组成: 其中zynq负责对phy进行配置,当zynq上的网络控制器以及phy完成正确配置时,能够看到RJ45上面的黄灯亮,此时表明链路已经通了.如果 ...
- LA 7278 Game of Cards(SG函数)
https://vjudge.net/problem/UVALive-7278 题意: 两个人玩游戏,现在有n堆牌,轮到自己时,先在牌堆中选一堆牌,先在牌堆中选择拿走0~k张牌(至少得剩下一张),然后 ...
- UVa 1637 纸牌游戏(全概率公式)
https://vjudge.net/problem/UVA-1637 题意: 36张牌分成9堆,每堆4张牌.每次可以拿走某两堆顶部的牌,但需要点数相同.每种拿法的概率均为1/5.求成功概率. 思路: ...
- POJ 3320 Jessica‘s Reading Problem(哈希、尺取法)
http://poj.org/problem?id=3320 题意:给出一串数字,要求包含所有数字的最短长度. 思路: 哈希一直不是很会用,这道题也是参考了别人的代码,想了很久. #include&l ...
- TreeMap的应用
public class SortedMap { //treemap按key排序,默认是升序,可自定义降序 public static void main(String[] args) { Map&l ...
- SRM 585 DIV2
250pt: 一水... 500pt:题意: 给你一颗满二叉树的高度,然后找出出最少的不想交的路径并且该路径每个节点只经过一次. 思路:观察题目中给的图就会发现,其实每形成一个 就会存在一条路径. 我 ...