Try   HackMD

Flask實作_基礎_05_render_template

tags: python flask

Python Flask實作_基礎_01_建立第一個app中利用return string成功的將內容渲染在網頁上,但是實作上不可能將整個HTML硬刻在上面,這次要討論如何利用render_template來做樣板的渲染。

作業說明

render_template是flask的內建函數,字面上的意思大概是渲染模板,因此它需要一個『模板』來提供渲染的格式。

from flask import render_template

flask預設模板語法是jinja2,這並不代表它只支援『jinja2』(註1),直觀來看,當return render_template('html文件')的時候,flask會先到專案資料夾『templates』去尋找相對應的html文件,因此,你需要先做的就是在專案底下建置一個資料夾,並且命名為『templates』(註2),如下圖:

在templates資料夾內新增一個html文件並命名為abc.html,內容如下:

  • file name: abc.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello Page</title> </head> <body> Flask APP </body> </html>

接著修正python文件內容

  • file name: hello_flask.py
from flask import Flask from flask import render_template app = Flask(__name__) @app.route('/') def index(): return render_template('abc.html') if __name__ == '__main__': app.debug = True app.run()

執行專案,開啟瀏灠器連結至http://127.0.0.1:5000/,我們已經很優雅的將abc.html的內容成功渲染。

註解說明

註1:flask除了支援jinja2,也支援Mako,但建議使用jinja2
註2:可以利用參數配置來調整,但預設情況下我們不會去異動。

總結

這一節我們瞭解到flask提供了一個方便的function可以讓我們先建置好模板之後再來渲染,這讓我們開發過程中python的事python處理,html的事html處理,接續的我們要理解flask跟jinja2之間的配合如何處理。

參考

jinja2.7_簡中說明
jinja2.10_官方文件

上一話:Flask實作_基礎_04_什麼是app.debug?
下一話:Flask實作_基礎_06_render_template + 參數