頁面模板 - LZerApp/crawlerenv GitHub Wiki

目錄 (🔎 點擊展開/關閉)

前言

在 Flask 應用程式中會根據 HTTP 請求的 URL 在路由中尋找對應的函數,並將函數的執行結果進行返回;一般而言,在非前後端分離的架構下需要將完整的 HTML 程式碼返回,這樣的內容不應全以字串的資料型別寫於視圖函數之中,為了力求簡潔與方便維護,正確的作法是將絕大部分的內容單獨存放於獨立的檔案中,而視圖函數則只處理需要動態進行填寫的部分,藉此分離業務邏輯與表現邏輯。

上述的過程需要藉助模板引擎(template engine)來實現,在模板中透過指定的語法標示出需要動態填入的部分,再交由模板引擎渲染(render)出最後的結果,目前 Flask 框架預設使用的模板引擎為 Jinja2


[ ↥ 回到頂部 ]

基礎模板

模板概述

模板本身僅只是個純文字檔案,可以用於生成任何其他的純文字檔案如 HTML、XML、CSV、LaTeX 等,因此沒有特定的副檔名。一個簡單的模板如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
    <ul id="navigation">
    {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    {% endfor %}
    </ul>

    <h1>My Webpage</h1>
    {{ a_variable }}
</body>
</html>

模板中除了固定不變的純文字內容之外,可以包含 Python 變數與陳述式,此時需要使用特定的分隔符號進行標示以便渲染。常見的分隔符號有:

  • 陳述式{% ... %} 用於 if 判斷式或 for 循環式…
  • 表達式{{ ... }} 用於變數表示、函數呼叫…
  • 註解區{# ... #}

[ ↥ 回到頂部 ]

變數傳遞


[ ↥ 回到頂部 ]

符號轉譯


[ ↥ 回到頂部 ]

控制結構


[ ↥ 回到頂部 ]

進階模板


[ ↥ 回到頂部 ]

參考資料


[ ↥ 回到頂部 ]

⚠️ **GitHub.com Fallback** ⚠️