Flask学习之旅——2.3 控制语句
前言
- 本文为《知了传课——控制语句》的学习笔记。
- 原文地址:第四节:控制语句 - Python框架Flask基础教程 - 知了传课 (zlkt.net)
控制语句
所有的控制语句都是放在{% ... %}中,并且有一个语句{% endxxx %}来进行结束,Jinja中常用的控制语句有if/for..in..
if语句
Jinja中的if语句和python中的的if语句类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作。
栗子
{% if age > 18 %}
<div>您已成年!</div>
{% elif age < 18 %}
<div>你的内容</div>
{% else %}
<div>你的内容</div>
{% endif %}
(注意:在使用if语句时,结尾处需要加上{% endif %})
测试器
测试器主要用来判断一个值是否满足某种类型,并且这种类型一般通过普通的if判断是有很大的挑战的。语法是:if...is...,先来简单的看个栗子:
{% if variable is escaped %} //判断变量的值是否被转义
变量被转义了,value of variable: {{ escaped }}
{% else %}
变量未被转义
{% endif %}
以上判断variable这个变量是否已经被转义了。
Jinja中内置了许多的测试器,如下表所示:
| 测试器 | 说明 |
|---|---|
| callable(object) | 是否可调用 |
| defined(object) | 是否已经被定义了。 |
| escaped(object) | 是否已经被转义了。 |
| upper(object) | 是否全是大写。 |
| lower(object) | 是否全是小写。 |
| string(object) | 是否是一个字符串。 |
| sequence(object) | 是否是一个序列。 |
| number(object) | 是否是一个数字。 |
| odd(object) | 是否是奇数。 |
| even(object) | 是否是偶数。 |
for循环
for循环可以遍历任何一个序列包括列表、字典、元组。并且可以进行反向遍历。
(注意:不可以使用continue和break表达式来控制循环的执行。)
-
普通的遍历:
<ul> {% for user in users %} <li>{{ user }}</li> {% endfor %} </ul> -
遍历字典:
<dl> {% for key, value in dict.items() %} <dt>{{ key }}</dt> <dd>{{ value }}</dd> {% endfor %} </dl> -
如果序列中没有值的时候,进入
else:<ul> {% for user in users %} <li>{{ user }}</li> {% else %} <li>no users found</li> {% endfor %} </ul>
并且Jinja中的for循环还包含以下变量,可以用来获取当前的遍历状态:
| 变量 | 描述 |
|---|---|
| loop.index | 当前迭代的索引(从1开始) |
| loop.index0 | 当前迭代的索引(从0开始) |
| loop.first | 是否是第一次迭代,返回True或False |
| loop.last | 是否是最后一次迭代,返回True或False |
| loop.length | 序列的长度 |

被折叠的 条评论
为什么被折叠?



