1、if以及for控制语句

所有的控制语句都是放在{% … %}中,并且有一个语句{% endxxx %}来进行结束,Jinja中常用的控制语句有if/for..in..
形式如下:(for同理)

  1. <body>
  2. {% if XXX %}
  3. xxxxx
  4. {% elif yyy %}
  5. xxxxx
  6. {% else %}
  7. xxxxx
  8. {% endif %}
  9. </body>

if:if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作
小例子if控制语句:
代码部分:

  1. from flask import Flask, render_template
  2. app = Flask(__name__)
  3. app.config["TEMPLATES_AUTO_RELOAD"] = True
  4. dic = {
  5. "name": "流浪者、j",
  6. "li": ['a', 'b', 'c'],
  7. "books": {
  8. "book1": "python",
  9. "book2": "java",
  10. "book3": "php"
  11. }
  12. }
  13. @app.route("/")
  14. def home():
  15. return render_template("if_for.html", **dic)
  16. if __name__ == "__main__":
  17. # app.config.from_pyfile('settings.py',silent=True)
  18. app.run(debug=True)

模板部分:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. {% if name == "流浪者、j" %}
  9. <p>{{ name }}</p>
  10. {% else %}
  11. <p>该用户不存在</p>
  12. {% endif %}
  13. </body>
  14. </html>

页面结果:
image.png
小例子for控制语句:
代码部分同上:

  1. from flask import Flask, render_template
  2. app = Flask(__name__)
  3. app.config["TEMPLATES_AUTO_RELOAD"] = True
  4. dic = {
  5. "name": "流浪者、j",
  6. "li": ['a', 'b', 'c'],
  7. "books": {
  8. "book1": "python",
  9. "book2": "java",
  10. "book3": "php"
  11. }
  12. }
  13. @app.route("/")
  14. def home():
  15. return render_template("if_for.html", **dic)
  16. if __name__ == "__main__":
  17. # app.config.from_pyfile('settings.py',silent=True)
  18. app.run(debug=True)

模板部分:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. {% for book in books.values() %}
  9. <!-- 添加序号,从1开始 -->
  10. <p>{{ loop.index }}</p>
  11. <p>{{ book }}</p>
  12. {% endfor %}
  13. <!-- hr标签表示分隔符 -->
  14. <hr>
  15. {% for i in li %}
  16. <p>{{ i }}</p>
  17. {% endfor %}
  18. </body>
  19. </html>

页面显示:
image.png

2、jinja2中for语法的说明

用来以下变量获取当前的遍历状态

变量 描述
loop.index 当前迭代的索引(从1开始)
loop.index0 当前迭代的索引(从0开始)
loop.first 是否是第一次迭代,返回True或False
loop.last 是否是最后一次迭代,返回True或False
loop.length 序列的长度

注意:在jinja2的模板中是没有break以及continue语法的