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_templateapp = Flask(__name__)app.config["TEMPLATES_AUTO_RELOAD"] = Truedic = {"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_templateapp = Flask(__name__)app.config["TEMPLATES_AUTO_RELOAD"] = Truedic = {"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语法的
