一个网页可以抽象为表现逻辑和业务逻辑的组合。模板就是用来描述表现逻辑的HTML页面。
表现逻辑:HTML元素+变量占位符(+变量过滤器)+控制结构
变量占位符
| 12
 3
 4
 
 | <p>{{ dic['key'] }}</p> <p>{{ list[idx] }}</p>
 <p> {{ obj.method() }} </p>
 <p> {{ name|filter }} </p>
 
 | 
变量过滤器
| 过滤器名 | 作用 | 
| safe | 渲染时不进行转义 | 
| capitalize | 首字母大写,其余小写 | 
| lower | 转小写 | 
| upper | 转大写 | 
| title | 每个单词首字母转大写 | 
| trim | 去除首尾空格 | 
| striptags | 渲染前去除值中的HTML标签 | 
控制结构
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | {% if x %}<p>x</p>
 {% else %}
 <p>404</p>
 {% endif %}
 
 
 {% for line in lines %}
 <li>line</li>
 {% endfor %}
 
 | 
模板使用示例
如图,模板文件(HTML)放入templates文件夹。

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 
 | <!DOCTYPE html>
 <head>
 <meta charset="utf-8">
 <title>Title</title>
 </head>
 
 <body>
 <h2>我是模板</h2>
 {{my_int}}
 <br>
 {{my_str}}
 <br>
 {{my_list}}
 <br>
 {{my_dict}}
 <hr>
 <h2>模板的list数据获取</h2>
 <hr>
 {{my_list[0]}}
 <br>
 {{my_list.1}}
 <hr>
 <h2>字典数据获取</h2>
 <hr>
 {{my_dict['name']}}
 <br>
 {{my_dict.age}}
 <hr>
 <h2>算术运算</h2>
 <br>
 {{my_list.0 + 10}}
 <br>
 {{my_list[0] + my_list.1}}
 </body>
 </html>
 
 
 | 
- 从flask包导入render_template模块。
- 视图函数的返回值变为render_template('template_name', **args)。(将args参数传入模板template_name中进行渲染)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | from flask import Flask, render_template
 app = Flask(__name__)
 
 @app.route('/')
 def index():
 
 my_str = 'Hello Word'
 my_int = 10
 my_array = [3, 4, 2, 1, 7, 9]
 my_dict = {
 'name': 'xiaosang',
 'age': 20
 }
 return render_template('hello.html', my_str = my_str, \
 my_int = my_int, my_list = my_array, my_dict = my_dict)
 
 if __name__ == '__main__':
 app.run(debug = True)
 
 |