1、if以及for控制语句
所有的控制语句都是放在{% … %}中,并且有一个语句{% endxxx %}来进行结束,Jinja中常用的控制语句有if/for..in..
形式如下:(for同理)
<body>
{% if XXX %}
xxxxx
{% elif yyy %}
xxxxx
{% else %}
xxxxx
{% endif %}
</body>
if:if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作
小例子if控制语句:
代码部分:
from flask import Flask, render_template
app = Flask(__name__)
app.config["TEMPLATES_AUTO_RELOAD"] = True
dic = {
"name": "流浪者、j",
"li": ['a', 'b', 'c'],
"books": {
"book1": "python",
"book2": "java",
"book3": "php"
}
}
@app.route("/")
def home():
return render_template("if_for.html", **dic)
if __name__ == "__main__":
# app.config.from_pyfile('settings.py',silent=True)
app.run(debug=True)
模板部分:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if name == "流浪者、j" %}
<p>{{ name }}</p>
{% else %}
<p>该用户不存在</p>
{% endif %}
</body>
</html>
页面结果:
小例子for控制语句:
代码部分同上:
from flask import Flask, render_template
app = Flask(__name__)
app.config["TEMPLATES_AUTO_RELOAD"] = True
dic = {
"name": "流浪者、j",
"li": ['a', 'b', 'c'],
"books": {
"book1": "python",
"book2": "java",
"book3": "php"
}
}
@app.route("/")
def home():
return render_template("if_for.html", **dic)
if __name__ == "__main__":
# app.config.from_pyfile('settings.py',silent=True)
app.run(debug=True)
模板部分:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for book in books.values() %}
<!-- 添加序号,从1开始 -->
<p>{{ loop.index }}</p>
<p>{{ book }}</p>
{% endfor %}
<!-- hr标签表示分隔符 -->
<hr>
{% for i in li %}
<p>{{ i }}</p>
{% endfor %}
</body>
</html>
2、jinja2中for语法的说明
用来以下变量获取当前的遍历状态
变量 | 描述 |
---|---|
loop.index | 当前迭代的索引(从1开始) |
loop.index0 | 当前迭代的索引(从0开始) |
loop.first | 是否是第一次迭代,返回True或False |
loop.last | 是否是最后一次迭代,返回True或False |
loop.length | 序列的长度 |
注意:在jinja2的模板中是没有break以及continue语法的