大綱
之前的視圖函數(shù)返回的都是字符串据德,這樣是很不利于網(wǎng)站建設(shè)减拭,大家都知道蔽豺,我們都網(wǎng)頁構(gòu)造三大元素(html,css拧粪,js)修陡,那這些數(shù)據(jù)如何通過視圖函數(shù)返回了沧侥?答案就是templates文件。
- 模板基本使用
- 變量
- 過濾器
基本使用
這里魄鸦,首先我們在templates文件夾下宴杀,創(chuàng)建一個html文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>羅羅攀</title>
</head>
<body>
<h1>Hello</h1>
<p>這個是模板基本使用</p>
</body>
</html>
然后通過視圖函數(shù)進行映射:
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/index/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
這樣我們就完成了一個渲染模板的功能拾因。
變量
當(dāng)然旺罢,我們也可以傳入變量到模板中,講上面的代碼進行簡單修改:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>羅羅攀</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
<p>這個是模板基本使用</p>
</body>
</html>
@app.route('/index/')
def index():
return render_template('index.html',name='羅羅攀')
當(dāng)然绢记,除了基本變量外扁达,列表,字典等數(shù)據(jù)類型都是可以傳入的蠢熄。我們也可以在模板中定義變量:
{% set username = 'luopan' %} #全局變量
{% with username = 'luopan' %}
在里面用
{% endwith %}
過濾器
過濾器其實就是對變量的修改罩驻,具體的變量過濾器可以去Jinja2文檔查看,這里簡單介紹下safe护赊,這個的作用為渲染是不轉(zhuǎn)義惠遏。這里我們再傳入一個變量,為<h1>world</h1>骏啰,默認(rèn)情況會對h1標(biāo)簽轉(zhuǎn)義节吮,然后把h1當(dāng)做字符串,如圖判耕。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>羅羅攀</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
{{ test }}
<p>這個是模板基本使用</p>
</body>
</html>
我們加上safe過濾器透绩,就會當(dāng)做為h1標(biāo)簽。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>羅羅攀</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
{{ test|safe }}
<p>這個是模板基本使用</p>
</body>
</html>