jinja2是python下乙個被廣泛應用的模版引擎,他的設計思想**於django的模板引擎,並擴充套件了其語法和一系列強大的功能。其中最顯著的乙個是增加了沙箱執行功能和可選的自動轉義功能,這對大多應用的安全性來說是非常重要的。
基於unicode並能在python2.4之後的版本執行,包括python3。
要想使用jinja2模板,需要從flask匯入render_template函式,然後在路由函式中呼叫render_template函式,該函式第乙個引數就是模板名字。模板預設儲存在目錄。
最簡單的模板檔案就是普通的html檔案,但靜態檔案沒什麼意義,需要在訪問路由時傳入響應的引數,並在模板中以一定的樣式顯示在瀏覽器中,因此,需要用到render_template函式的關鍵字引數。假設有乙個模板檔案hello.html,**如下:
這個用}括起來的部分就是模板表示式。在使用render_template函式呼叫模板檔案hello.html時,需要通過關鍵字引數指定name值。
render_template('hello.html',name='star')
返回給客戶端時,}會被替換成star.
網頁輸出**
1. 變數顯示語法: }
2. for迴圈:
3. if語句
# templates目錄裡面建立mubna.html檔案
變數:}
列表:}
列表元素:
}字典:}
字典元素:}}
物件:}
使用者密碼}}
服務端給客戶端返回的資料可能來自於多種資料來源。這些資料格式可能並不能滿足客戶端需求,就需要對資料進行再加工。
過濾器需要放在模板表示式變數的後面,與變數之間用'|'分割,}將value英文本母都轉換為大寫形式。
編寫乙個時間過濾器,將時間戳轉換為特定格式的字串時間
from flask import flask, render_template
import time
def time_format(value,format="%y-%m-%d %h:%m:%s"):
# 時間戳----> 元組
t_time = time.localtime(value)
# 元組 ----> 指定字串
return time.strftime(format,t_time)
# 第乙個引數是過濾器函式,第二個引數是過濾器名稱
def chtime():
return render_template('chtime.html',timestamp = time.time())
# templates/目錄下的chtime.html
時間戳}
格式化後的時間
在編寫python程式時,會有很多地方呼叫同樣或類似的**。這種情況,可以把重複使用的**放到函式或類中,只需要訪問函式或類的例項就可以實現**復用。jinja2 模板中使用巨集來防止**冗餘。
jinja2 模板中的巨集需要放到,使用修飾,支援引數,並且使用結束
如果巨集要被多個模板檔案共享,就需要將巨集單獨放到乙個模板檔案中,然後使用指令匯入該模板
## templates/目錄下的macro.html
}
# # templates/目錄下的login.html
登陸
#主程式
jinja2模板還有另一種**復用技術,就是模板繼承。當乙個模板被另外的模板繼承時,可以通過} 訪問父模板的資源。在乙個模板中繼承另乙個模板,需要extends 指令。如 child.txt 模板檔案從 parent.txt 繼承的**
child.txt 從parent.txt模板繼承後,會自動使用parent.txt 中的所有**,但要放在
....
中的**需要child.txt中使用}引用。其中,***x是塊(block)的名字
模板繼承語法:
1. 如何繼承某個模板?
2. 如何挖坑和填坑?
挖坑:
預設值填坑:
3. 如何呼叫/繼承被替代的模板?
挖坑:
預設值填坑:
#如何繼承挖坑時的預設值?
}# 後面寫新加的方法.
........
#templates目錄下建立parent.html模板檔案
i love python!
cute,}
#templates目錄下建立child.html模板檔案
}#}}-}
# 主程式
python大佬養成計畫 HTML DOM
dom document object model 譯為文件物件模型,是 html 和 xml 文件的程式設計介面。html dom 定義了訪問和操作 html 文件的標準方法。dom 以樹結構表達 html 文件。html dom 定義了所有 html 元素的物件和屬性,以及訪問它們的方法。換言之...
python大佬養成計畫 flask應用
要求將使用者登陸時的資訊,傳送至後台與資料庫進行比對,來判斷使用者是否可登陸 config.py檔案,用來建立遠端連線的類 class db host 192.168.1.227 user root passwd sheen port 3306 dbname test 主程式 import pymy...
python大佬養成計畫 正規表示式
re regular experssion re 模組使 python 語言擁有全部的正規表示式功能。compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。作用 對於字串進行處理,會檢查這個字串內容是否與你寫的正規表示式匹配 如果匹...