Flask web開發(3):模板

發表於2016-08-08

本系列筆記是我閱讀Miguel Grinberg的《Flask Web Development》的筆記,標題與書本同步。希望通過記錄技術筆記的方式促進自己對知識的理解。

本篇對應書本第三章:模板。

模板是一個包含響應文字的檔案,其中包含用佔位變數表示的動態部分,其具體值只在請求的上下文中才能知道。使用真實值替代變數,再返回最終得到的響應字串,這一過程成為渲染。

Jinja2模板引擎

Flask渲染模板使用的是Jinja2模板引擎。

渲染模板

變數

模板中使用的{{ name }}結構表示一個變數,它是一種特殊的佔位符,告訴模組引擎這個位置的值從渲染模板時使用的資料中獲取。

Jinja2能識別所有型別的變數,示例:

變數過濾器

過濾器名新增在變數之後,中間使用豎線分隔。

常用過濾器:

過濾器名 說明
safe 渲染值時不轉義
capitalize 把值得首字母轉換成大寫,其他字母轉換成小寫
lower 把值轉換成小寫形式
upper 把值轉換成大寫形式
title 把值中每個單詞的首字母都換成大寫
trim 把值的首位空格去掉
striptags 渲染之前把值中所有的HTML標籤都刪掉

控制結構

條件控制結構

渲染一組元素

巨集

複用程式碼片段

模板繼承

使用Flask-Bootstrap整合Twitter Bootstrap

Bootstrap是Twitter開發的一個開源框架,它提供使用者介面元件可用於建立整潔且具有吸引力的網頁,而且這些網頁還能相容所有現代Web瀏覽器。Bootstrap是客戶端框架,不會直接涉及伺服器。可以在模板中引用Bootstrap的CSS和JavaScript檔案。

安裝Flask-Bootstrap擴充套件

使用Flask-Bootstrap的模板

Flask-Bootstrap基模板中定義的塊

塊名 說明
doc 整個HTML文件
html_attribs <html>標籤的屬性
html <html>標籤中的內容
head <head>標籤中的內容
title <title>標籤中的內容
metas 一組標籤
styles 層疊樣式表定義
body_attribs <body>標籤的屬性
body <body>標籤中的內容
navbar 使用者定義的導航條
content 使用者定義的頁面內容
scripts 文件底部的JavaScript宣告

自定義錯誤頁面

利用Jinja2的模板繼承機制可以讓templates/base.html繼承自bootstrap/base.html。

連結

Flask提供了url_for()輔助函式,它可以使用程式URL對映中儲存的資訊生成URL。

  • url_for函式最簡單的用法:以檢視函式名作為引數,返回對應的URL。url_for(‘index’)得到的結果是’/’
  • 使用url_for生成動態地址時,將動態部分作為關鍵字引數傳入。
    url_for(‘user’,name=’john’,_external=True)
  • 函式能將任何額外引數新增到查詢字串中。

靜態檔案

使用Flask-Moment本地化日期和時間

Flask-Moment是Flask的一個程式擴充套件,能夠在瀏覽器中渲染日期和時間。

安裝Flask-Moment

hello.py:初始化Flask-Moment

templates/base.html: 引入 moment.js庫

hello.py: 加入一個datetime變數

templates/index.html: 使用Flask-Moment渲染時間戳

相關文章