Flask 爲你配置 Jinja2 模板引擎。使用 render_template() 方法能夠渲染模板,只需提供模板名稱和須要做爲參數傳遞給模板的變量就可簡單執行。html
至於模板渲染? 簡單來講,就是將「數據」渲染到你的模板裏。看完如下章節示例你就會知道了。flask
(其實更爲推薦的方式是先後端分離,不推薦用Flask模板,如下僅供學習參考)後端
先來看一個最簡單的模板示例:安全
from flask import Flask, render_template from models import User app = Flask(__name__) @app.route("/") def template1(): return render_template("index.html")
上述代碼仍是比較易讀的,即當前路由 "/" 會返回模板爲 index.html 的文檔。如示例運行後,訪問 localhost:5000 會返回顯示 index.htmlsession
那上述 index.html 這類 html 模板文檔應放置在哪呢? Flask 會在 templates 文件夾(注意拼寫)內尋找模板。所以,若是你的應用是一個模塊,那麼模板文件夾應該在模塊旁邊;若是是一個包,那麼就應該在包裏面:app
情形 1: 一個模塊:
/application.py
/templates
/xxx.html前後端分離
情形 2: 一個包:
/application
/__init__.py
/templates函數
這邊僅簡單介紹下模板渲染,能夠充分使用 Jinja2 模板引擎的威力。更多內容,詳見官方 Jinja2 模板文檔 。學習
新建一 flask.html , 一樣放置於 templates 文件夾中,body 內容參考以下:spa
<body> <h1>{{ content }}</h1> </body>
其中 {{ content }} 即爲須要傳遞的參數; 這邊的模板文件 跟 HTML文件 的區別只是裏面加入了以 {{ ... }} 組成的動態內容佔位符
同上例,新建一路由,代碼以下:
@app.route("/flask") def template2(): c = "flask" return render_template("flask.html",content=c)
示例運行後,訪問 localhost:5000/flask 會返回顯示 flask.html , 其中 content 部分會返回代碼中你所設置的值:
在模板內部你也能夠訪問 request 、session 和 g 對象,以及 get_flashed_messages() 函數。
模板在繼承使用的狀況下尤爲有用, 如需瞭解,請參閱 模板繼承文檔 。簡單的說,模板繼承能夠使每一個頁面的特定元素(如頁頭,導航,頁尾)保持一致。
自動轉義默認開啓。所以,若是 name 包含 HTML ,那麼會被自動轉義。若是你能夠信任某個變量,且知道它是安全的 HTML (例如變量來自一個把 wiki 標記轉換爲 HTML 的模塊),那麼能夠使用 Markup 類把它標記爲安全的。不然請在模板 中使用 |safe 過濾器。更多例子參見 Jinja 2 文檔。
本篇博文僅簡單介紹下 Flask 模板,簡單的頁面使用 Flask 模板是很方便的,但複雜的就麻煩了。誠如開頭所言,推薦先後端分離的作法,詳細的模板使用還請參閱 Jinja 2 文檔。