目录
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:
- 条件表达式的值为False;
- 条件表达式的值为None;
- 条件表达式的值为空字符串;
- 条件表达式的值为数字0(整型0或浮点数0)
- 条件表达式的值为空列表;
- 条件表达式的值为空字典。
使用示例
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=