jinja2是一个被广泛使用的模板引擎,其设计思想源自于django模板引擎,jinja2扩展了语法,增加了强大的功能,被flask选为内置的模板语言。
你应该已经知道,当视图函数返回一个html文件时,需要使用render_template函数,可你想过没有,你编写的html文件里的内容,有很多是有变化的。比如一个网站,你登录以后,网站的页面上要显示你的用户名,但这个页面用的是同一个html,它是怎样做到不同的人登录后看到不同的名字呢?
这正是模板引擎要解决的问题,在编写html时,那些需要变化的地方需要使用模板引擎的表达式来编写,比如名字需要变化,那么在编写html时,你应该这样编写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>欢迎你 </p>
</body>
</html>
看见没,名字的部分用两个大括号围起来,{{ ... }} 的部分是动态变化的,使用render_template渲染模板时,传递name这个参数就可以动态设置这个部分
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/name/<string:name>', methods=['GET'])
def name(name):
return render_template('name.html', name=name)
if __name__ == '__main__':
app.run(debug=True)
启动服务,在浏览器里输入 http://127.0.0.1:5000/name/小明
那么页面上显示的内容就是
欢迎你 小明
如果你把小明修改成小刚,页面也随之发生变化,这就是模板引擎所做的工作。
模板有助于页面展现和业务逻辑之间的分离,在flask中,模板(html文件)被放置在程序的templates这个默认文件夹下,本示例的目录结构如下
./
├── app.py
└── templates
└── name.html
QQ交流群: 211426309