在实际开发网站中,为了是网站更加美观,需要渲染一个有富文本标签的页面,通常包含大量的HTML代码,因此在flask中,渲染HTML通常会交给模版引擎来实现,而flask中默认配套的模版引擎是jinja2,jinja2是一个高效、可扩展的模版引擎,jinja2可以独立于flask使用,如被Django使用
一、渲染模版
需要导入 render_template,使用render_template使用templates文件下的index.html文件,地址栏输入对应地址,页面即可输出html标签h1中的内容
@app.route('/')
def hello_world():
return render_template("index.html")
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>知了知了</title>
</head>
<body>
<h1>知了首页内容,这里是知了传课首页内容</h1>
</body>
</html>
二、渲染变量
传递了blog_id和username两个参数,html中使用参数的方式是使用 {{}},即可引用
@app.route("/blog/<blog_id>")
def blog_detail(blog_id):
return render_template("blog_detail.html",blog_id=blog_id,username="admin") #将blog_id和username传给了html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>知了</title>
</head>
<body>
我是{{username}}
<h1>博客园第{{blog_id}}页</h1>
</body>
</html>
三、渲染字典类型变量和类对象变量
class user():
def __init__(self,name,email):
self.name = name
self.email = email
@app.route("/variable")
def variable():
hobby = '游戏'
user_detail = user(name="admin",email="xxx@qq.com")
person = {"age":30,"jineng":"game"}
return render_template("variable.html",hobby=hobby,user=user_detail,person=person)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>知了</title>
</head>
<body>
<h1>兴趣爱好:{{hobby}}</h1>
<h1>用户名:{{user.name}}</h1>
<h1>邮箱名:{{user.email}}</h1>
年龄:{{person.age}}
技能:{{person.jineng}}
</body>
</html>
整体代码
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("index.html")
@app.route("/blog/<blog_id>")
def blog_detail(blog_id):
return render_template("blog_detail.html",blog_id=blog_id,username="admin") #将blog_id和username传给了html文件
class user():
def __init__(self,name,email):
self.name = name
self.email = email
@app.route("/variable")
def variable():
hobby = '游戏'
user_detail = user(name="admin",email="xxx@qq.com")
person = {"age":30,"jineng":"game"}
return render_template("variable.html",hobby=hobby,user=user_detail,person=person)
if __name__ == '__main__':
app.run(debug=True,host="0.0.0.0",port=8000)