一个网页可以抽象为表现逻辑和业务逻辑的组合。模板就是用来描述表现逻辑的HTML页面。
表现逻辑:HTML元素
+变量占位符
(+变量过滤器
)+控制结构
变量占位符
1 2 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标签 |
控制结构
1 2 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
文件夹。
1 2 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中进行渲染)
1 2 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)
|