如果你也在学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中,是没有continuebreak来中断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】的更多相关文章

  1. flask第二十二篇——模板【4】过滤器

    请关注微信公众号:自动化测试实战 先来教大家一个pycharm设置默认模板的方法.我们每次新建模板或者平时写代码打开以后可能都要重复写# coding: utf-8这些代码,其实我们可以设置好模板,让 ...

  2. flask第二十四篇——模板【6】自定义过滤器

    请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...

  3. flask第二十五篇——控制语句

    有兴趣的请加船长公众号:自动化测试实战 先和大家强调一个发邮件的问题 # coding: utf-8 import smtplib from email.mime.text import MIMETe ...

  4. flask第十九篇——模板【3】

    请关注微信公众号:自动化测试实战 今天我们继续模板的知识,现在我们增加字典的复杂度,这个时候在render_template第二个参数可以传**title,以后我们会用**context代替原来的ti ...

  5. flask第十八篇——模板【2】

    请关注公众号:自动化测试实战 上一节我们介绍了模板的基本使用方法,现在我们想一个问题,如果把index.html放到template文件夹下面的文件夹该怎么办呢?其实很容易,当文件夹结构如下图所示时: ...

  6. 第二十六篇:两个SOUI新控件 ---- SListView和SComboView(借用Andorid的设计)

    SOUI原来实现的SListBoxEx的效率一直是我对SOUI不太满意的地方.包括后来网友实现的SListCtrlEx. 这类控件为每一个列表项创建一个SWindow来容纳数据,当数据量比较大(100 ...

  7. Flask最强攻略 - 跟DragonFire学Flask - 第十六篇 Flask-Migrate

    终于到了Flask-Migrate,之前在学习Flask-SQLAlchemy的时候,有的同学就提过类似的问题,Flask支持 makemigration / migrate 吗? 答案在这里该诉你, ...

  8. 第二十六篇 jQuery 学习8 遍历-父亲兄弟子孙元素

    jQuery 学习8 遍历-父亲兄弟子孙元素   jQuery遍历,可以理解为“移动”,使用“移动”还获取其他的元素.   什么意思呢?老师举一个例子: 班上30位同学,我是新来负责教这个班学生的老师 ...

  9. 第二十六篇-单击事件、Toast(提示框信息)

    单击事件有3种方法: 第一种: layout.xml <?xml version="1.0" encoding="utf-8"?> <Line ...

随机推荐

  1. mysql索引之主键索引

    MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引 二.语句 CREATE TABLE table_name[col_name data type] [ ...

  2. c++第十八天

    p105~p108: 1.迭代器与数组的不同:迭代器的索引值必须是无符号类型,数组的索引无此要求. 2.使用数组的时候编译器一般会把它转化为指针. 3.auto ia2(数组名);的结果是:获得一个指 ...

  3. P2831 愤怒的小鸟(状压dp)

    P2831 愤怒的小鸟 我们先预处理出每个猪两两之间(设为$u,v$)和原点三点确定的抛物线(当两只猪横坐标相等时显然无解) 处理出$u,v$确定的抛物线一共可以经过多少点,记为$lines[u][v ...

  4. Linux内核分析

    通过分析汇编代码理解计算机是如何工作的   网易云课堂<Linux内核分析>作业 实验目的: 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 实验过程: 登陆实验楼虚拟机h ...

  5. noip2017普及 兔纸游玩记

    初中的最后一场比赛...就这样结束了吧...QAQ时间...真够快的qwq 应该是初中的最后一篇游记了吧,尽量写多点... 这是一篇,初三 老年菜兔的 noip2017 普及游玩记吧! DAY 0  ...

  6. python应用-matplotlib绘图

    详细内容参看:官网 测试数据: # 传入的参数 x=[1,2,3,4,5] squares=[1,4,9,16,25] 简单的绘图 import matplotlib.pyplot as plt de ...

  7. springboot2 统一返回结果

    统一返回结果是说,不用在controller层,new一个对象,或用工厂创建这个对象,再返回这个对象,而是这个Action该返回什么就返回什么, 我们再通过mvc的流程,再对返回对象做进一步的封装,以 ...

  8. VS2012 QT程序打包部署详解

    1.设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图: 2.发布程序 在 ...

  9. sql语句中处理金额,把分换算成元

    问题,sql语句中直接将金额/100返回的结果会有多个小数位. as value from account as acc left join conCategory as cate on acc.ca ...

  10. Luogu P4062 [CTSC2018]混合果汁 (主席树)

    二分$d$, 转为判断判断是否能取到$Lj$升, 再可持久化一下就好了 #include <iostream> #include <algorithm> #include &l ...