flask-页面模板渲染JinJa2
flask用 render_template()函数渲染前端页面
from flask import Flask,render_template
app=Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__=='__main__':
app.run()
视图函数传参数给html页面
class User:
def __init__(self,name,email):
self.name=name
self.email=email
# 显示用户详情. 从视图函数给html页面传递各种参数.
@app.route('/details')
def show_details():
person={
'name':'Sary',
'age':22,
'gender':'女'
}
title='Test'
hobbys=['听音乐','写代码','玩游戏']
z3=User('Zhang3','abcde12345@126.com')
return render_template('details.html', # 要渲染的页面
title=title, # 传单一普通变量
person=person, # 传字典
hobbyList=hobbys,# 传列表,元组
user=z3) # 传对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<!--字典参数传过来,可以用key获取值. 也可以用 '.' 获取值-->
<h1>大家好,我是{{ person["name"] }},今年{{person.age}}岁了.</h1>
<hr>
<h2>我的兴趣爱好有:</h2>
<ul>
{% for hobby in hobbyList %}
<li>{{ hobby }}</li>
{% endfor %}
</ul>
<h2>我的秘书是:{{user.name}},有事请联系:{{user.email}}</h2>
</body>
</html>
总结:
变量通过嵌套双大括号获值.
对象,字典.都可以通过 '.'操作获取对应属性.
补充
给模板传参数时.如果参数过多.
可以先凑成一个字典.然后再通过 **操作将字典变为关键字参数传给前端页面.
parameters={
'title':title,
'person':person,
'hobbyList':hobbys,
'user':z3
}
return render_template('details.html',**parameters)
浙公网安备 33010602011771号