Flask 學習(三)模板


Flask 學習(三)模板

  

  Flask 為你配置 Jinja2 模板引擎。使用 render_template() 方法可以渲染模板,只需提供模板名稱和需要作為參數傳遞給模板的變量就可簡單執行。

  至於模板渲染? 簡單來說,就是將“數據”渲染到你的模板里。看完以下章節示例你就會知道了。

  (其實更為推薦的方式是前后端分離,不推薦用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.html

    那上述 index.html 這類 html 模板文檔應放置在哪呢? Flask 會在 templates 文件夾(注意拼寫)內尋找模板。因此,如果你的應用是一個模塊,那么模板文件夾應該在模塊旁邊;如果是一個包,那么就應該在包里面:

    情形 1: 一個模塊:
      /application.py
      /templates
          /xxx.html

    情形 2: 一個包:
      /application
        /__init__.py
        /templates

 

   模板渲染

    這邊僅簡單介紹下模板渲染,可以充分使用 Jinja2 模板引擎的威力。更多內容,詳見官方 Jinja2 模板文檔

    新建一 flask.html , 同樣放置於 templates 文件夾中,body 內容參考如下:

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

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM