Bootstrap

Jinja2条件控制

目录

描述

Jinja2条件控制语法

条件控制True/False场景

使用示例

1. 条件表达式的值是False

2. 条件表达式的值是None

3. 条件表达式的值为字符串

4. 条件表达式的值是数值型

5. 条件表达式的值是列表

6. 条件表达式的值是元组

7. 条件表达式的值是集合

8. 条件表达式的值是字典

总结

注意事项

1、HTML代码中不能包含Jinja2条件判断的注释(这应该算是Jinja2的一个bug)


描述

        Jinja2模板中的条件控制语句(if,elif,else)可以控制前端逻辑显示。

 

Jinja2条件控制语法

        Jinja2的条件控制与Python类似,但还是有一些不同:

{% if condition %}
    html code...
{% elif condition %}
    html code...
{% else %}
    html code...
{% endif %}

 其中elif和else可选,也可以出现elif任意次,这与Python用法相同。

条件表达式中可以使用not、and、or等关键字。

每个条件控制语句块结束后都要另起一行加上 {% endif %},否则服务器会报错500。

 

条件控制True/False场景

在Jinja2条件控制结构中,以下情况条件表达式结果为False:

  1. 条件表达式的值为False;
  2. 条件表达式的值为None;
  3. 条件表达式的值为空字符串;
  4. 条件表达式的值为数字0(整型0或浮点数0)
  5. 条件表达式的值为空列表;
  6. 条件表达式的值为空字典。

 

使用示例

1. 条件表达式的值是False

HTML代码 demo.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Jinja condition demo</title>
</head>
<body>
    {% if element %}
        <p>element value is true.</p>
    {% else %}
        <p>element value is false.</p>
    {% endif %}
</body>
</html>

Python脚本:

import flask

app = flask.Flask(__name__)

@ app.route("/")
def index():
    return flask.render_template("demo.html", element=False)

if __name__ == '__main__':
    app.run()

运行结果:

 

2. 条件表达式的值是None

html代码同上。

Python脚本:

import flask

app = flask.Flask(__name__)

@ app.route("/")
def index():
    return flask.render_template("demo.html")

if __name__ == '__main__':
    app.run()

运行结果:

3. 条件表达式的值为字符串

传入两个字符串,其中一个字符串为空串""。

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset=
;