Jinja2模板引擎简介
模板
在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。
- 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取
- 使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”
- Flask是使用 Jinja2 这个模板引擎来渲染模板
使用模板的好处:
- 视图函数只负责业务逻辑和数据处理(业务逻辑方面)
- 而模板则取到视图函数的数据结果进行展示(视图展示方面)
- 代码结构清晰,耦合度低
渲染模版函数
- Flask提供的 render_template 函数封装了该模板引擎
- render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对,表示模板中变量对应的真实值。
模版使用
{ {}} 来表示变量名,这种 { {}} 语法叫做变量代码块
<h1>{
{ post.title }}</h1>
代码中传入字符串,列表,字典到模板中
@app.route('/')
def index():
name = '长弓'
data = {
'key':'python讲师',
'array':[1,2,3,4,5],
'dicts':{
'name':'老王',
'age':12
},
"info": [{
'name': '王昭君',
'age': 18
}, {
'name': '小鲁班',
'age': 8
}]
}
user = '貂蝉'
return render_template('index.html',name=name,data=data,user=user)
模板中代码
<!-- 普通取值 -->
<h1>{
{ name }}</h1>
<!-- 列表取值 -->
<p>{
{ data.array }}</p>
<p>{
{ data.array.0 }}</p>
<p>{
{ data.array[1] }}</p>
<!-- 字典取值 -->
<p>{
{ data.dicts }}</p>
<p>{
{ data.dicts['name'] }}</p>
<!-- 列表套字典取值 -->
<p