Flask 學習(三)模板

Flask 學習(三)模板

  

  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 文檔。

相關文章
相關標籤/搜索