Jinja2模板中所有控制语句都放在{% ... %}中,并且以{% endxxx %}来进行结束,Jinja中常用的控制语句有if/for..in..。
if:if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作。
示例代码:
main.py
- from flask import Flask, render_template
-
- app = Flask(__name__)
-
-
- @app.route('/')
- def index():
- content = {
- "names": {"name": 'dgw'},
- "age": 25,
- "sex": '男'
- }
-
- return render_template('index.html', **content)
-
-
- if __name__ == '__main__':
- app.run()
index.html
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>首页title>
- head>
- <body>
- 欢迎来到首页!
- <div>
- {% if age > 25 %}
- 您已经超过25岁了!
- {% elif age < 25 %}
- 您的年龄小于25岁!
- {% else %}
- 您的年龄今年25岁了!
- {% endif %}
- div>
-
- body>
- html>
运行结果:
for...in...:for循环可以遍历任何一个序列包括列表、字典、元组。并且可以进行反向遍历。
main.py
- from flask import Flask, render_template
-
- app = Flask(__name__)
-
-
- @app.route('/')
- def index():
- name_list = ['张三', '李四', '王五']
-
- return render_template('index.html', name_list=name_list)
-
-
- if __name__ == '__main__':
- app.run()
index.html
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>首页title>
- head>
- <body>
- 欢迎来到首页!
- <ul>
- {% for name in name_list %}
- <li>{{ name }}li>
- {% endfor %}
- ul>
-
- body>
- html>
运行结果:
main.py
- from flask import Flask, render_template
-
- app = Flask(__name__)
-
-
- @app.route('/')
- def index():
- name_dict = {
- 'name1': '张三',
- 'name2': '李四',
- 'name3': '王五'
- }
-
- return render_template('index.html', name_dict=name_dict)
-
-
- if __name__ == '__main__':
- app.run()
index.html
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>首页title>
- head>
- <body>
- 欢迎来到首页!
- <ul>
- {% for key, value in name_dict.items() %}
- <li>{{ key }}:{{ value }}li>
- {% endfor %}
- ul>
-
- body>
- html>
运行结果:
main.py
- from flask import Flask, render_template
-
- app = Flask(__name__)
-
-
- @app.route('/')
- def index():
- name_dict = {
- }
-
- return render_template('index.html', name_dict=name_dict)
-
-
- if __name__ == '__main__':
- app.run()
index.html
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>首页title>
- head>
- <body>
- 欢迎来到首页!
- <ul>
- {% for key, value in name_dict.items() %}
- <li>{{ key }}:{{ value }}li>
- {% else %}
- <li>Not found!li>
- {% endfor %}
- ul>
-
- body>
- html>
运行结果:
Jinja中的for循环还包含以下变量,可以用来获取当前的遍历状态:
变量 | 描述 |
---|---|
loop.index | 当前迭代的索引(从1开始) |
loop.index0 | 当前迭代的索引(从0开始) |
loop.first | 是否是第一次迭代,返回True或False |
loop.last | 是否是最后一次迭代,返回True或False |
loop.length | 序列的长度 |
注意:不可以使用continue和break表达式来控制循环的执行。