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 | 序列的长度 |