用flask開發個人部落格(8)—— flask中的模板
阿新 • • 發佈:2019-01-06
一般而言,檢視函式中存在兩種邏輯,業務邏輯和表現邏輯。業務邏輯諸如我們在登入頁面時輸入使用者名稱和密碼後,點選確定按鈕時,在資料庫驗證該使用者名稱和密碼是否正確. 表現邏輯就是返回正確的html檔案在瀏覽器中進行顯示。業務邏輯和表現邏輯混雜在一起很容易導致程式碼的難以理解和維護。模板的引入就是為了解決這一問題,flask使用Jinja2模板引擎,將表現邏輯封裝,使得業務邏輯和表現邏輯分離。
git clone git@github.com:HymanLiuTS/flaskTs.git
獲取本文原始碼:
git checkout FL08
flask中所使用的模板檔案全部在根目錄的templates資料夾下,先看一下之前引入的一個最簡單的flask程式示例,我們直接在檢視函式中返回了字串,這就是將業務邏輯和表現邏輯混合,會造成程式碼的可讀性差和難以維護:
from flask import Flask app=Flask(__name__) @app.route('/') def index(): return 'hello world' @app.route('/user/<name>') def user(name): return 'hello %s'%name if __name__=='__main__': app.run()
現在我們利用模板修改上面的程式碼,實現業務邏輯和表現邏輯的分離.首先在當前的目錄下建立templates目錄,分別在目錄下建新建index.html和user.html兩個檔案.我們在檢視函式,藉助render_template方法返回html.
將上述程式碼改寫為:
from flask import Flask from flask import render_template app=Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/user/<name>') def user(name): return render_template('user.html',name=name) if __name__=='__main__': app.run()
index.html:
<h1>Hello world</h1>
user.html:
<h1>hello {{name}} </h1>
完成上述修改之後,修改前後在介面上的效果是一致的。
克隆本專案:git clone git@github.com:HymanLiuTS/flaskTs.git
獲取本文原始碼:
git checkout FL08