上一節(jié)我們介紹了模板的基本使用方法,現(xiàn)在我們想一個(gè)問(wèn)題,,如果把index.html 放到template 文件夾下面的文件夾該怎么辦呢,?其實(shí)很容易,,當(dāng)文件夾結(jié)構(gòu)如下圖所示時(shí): 我們只需要修改render_template 的值即可,代碼如下: 如果你在pycharm里面修改,,pycharm會(huì)自動(dòng)幫你改應(yīng)用的代碼的,。 現(xiàn)在來(lái)想另一個(gè)問(wèn)題,就是既然模板可以復(fù)用,,那么它里面的內(nèi)容肯定不可能寫(xiě)死對(duì)吧,,如果寫(xiě)成固定值那每個(gè)頁(yè)面的內(nèi)容都成了一樣的了,所以模板就需要寫(xiě)成變量的形式,,通過(guò)給變量傳值來(lái)修改模板對(duì)應(yīng)的內(nèi)容,。在flask中,變量的寫(xiě)法是{{ 變量值 }} 這種兩個(gè)大括號(hào)(又叫大胡須 )的形式,。 現(xiàn)在我們?cè)谥魑募o一段字符串,,然后想把它應(yīng)用到.html 模板中,我們?cè)撛蹰T(mén)辦呢,?根據(jù)render_template 的源碼知道它還有第二個(gè)參數(shù)——關(guān)鍵字參數(shù)**context ,,所以我們知道只需要給它傳一個(gè)關(guān)鍵字參數(shù)即可,加上剛才的大胡須傳遞變量,,我們來(lái)看一段代碼: templateDemo.py 文件
# coding: utf-8
from flask import Flask, render_template
app = Flask(__name__) # type: Flask app.debug = True
@app.route('/') def hello_world():
title = u'首頁(yè)內(nèi)容'
return render_template('post/index.html', title=title)
if __name__ == '__main__':
app.run()
index.html 文件
<!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8">
<title>這里是title</title> </head> <body>
<h1>{{ title }}</h1> </body> </html>
現(xiàn)在來(lái)執(zhí)行代碼,,然后去頁(yè)面查看: 我們看到title 的內(nèi)容已經(jīng)在頁(yè)面上顯示出來(lái)了。 這是模板引用變量的最簡(jiǎn)單的一個(gè)例子,。 現(xiàn)在我們來(lái)渲染一個(gè)字典(就是傳值為字典,,專(zhuān)業(yè)術(shù)語(yǔ)叫渲染,記住了): # coding: utf-8
from flask import Flask, render_template
app = Flask(__name__) # type: Flask app.debug = True
@app.route('/') def hello_world():
title = {"name": "Warren", "age": 18, "gender": "male"} return render_template('post/index.html', title=title) if __name__ == '__main__':
app.run()
執(zhí)行代碼后看到頁(yè)面直接顯示了字典title的內(nèi)容: 如果我們現(xiàn)在只想取字典里name 的值呢,?那么我只需要修改index.html 里面的內(nèi)容即可:
index.html 文件 <!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title>這里是title</title>
</head> <body>
<h1>{{ title.name }}</h1>
</body> </html>
可以看到,,取值的方式就是title.name 即可。
|