flask 模板過濾器及自定義模板過濾器
阿新 • • 發佈:2020-11-20
內建的模板過濾器:
過濾器的本質就是函式。有時候我們不僅僅只是需要輸出變數的值,我們還需要修改變數的顯示,甚至格式化、運算等等,這就用到了過濾器。
過濾器的使用方式為:變數名 | 過濾器。 過濾器名寫在變數名後面,中間用 | 分隔。
1.字串過濾器:
<!--safe :禁用html轉義--> {{'<em>html</em>'|safe}} ==========> html <br/> {{'<b>我是0加粗的字型</b>'|safe}}==============>我是0加粗的字型 <br/><!--capitalize:將第一個單詞的首字母大寫,其餘都是小寫--> {{'we help each other'|capitalize}}==================>We help each other <br/> <!--title:將每一個單詞的首字母都大寫--> {{'we help each other'|title}}===================>We Help Each Other <br/> <!--lower:將所有字串的大寫轉換成小寫,非字母保持不變--> {{'HELLo'|lower}}==========================>hello<br> <!--upper:將所有字串的小寫轉換成大寫,非字母保持不變--> {{'he,llo'|upper}}==========================>HE,LLO <br> <!--trim:去除左右兩邊的空格,不會轉義 ;--> {{' l ov e '|trim}}==================>l ov e <br>{{' l ov e '|trim}}==========l ov e <br> <!--reverse:將單詞中每個字元進行反轉--> {{'hello'|reverse}}=================>olleh <br> <!--format:格式化輸出--> {{'%s今年%d歲了'|format('小麗',20)}}============>小麗今年20歲了 <br> <!--striptags:將字串中所有的html標記全部刪除(不管是否禁用html轉義都能直接刪除)--> {{'<font color="red">紅色字</font>'|safe|striptags}}===========》紅色字 <br> 過濾器是支援鏈式操作的(沒有級聯關係,就是根據寫入的順序依次執行): {{'hello erveryone'|upper|lower|title|reverse}}===============》enoyrevrE olleH
2.列表過濾器:
- first:取列表中的第一個元素
{{[1,2,3,4,5]|first}}========>1
2. last:取列表中最後一個元素
{{[1,2,3,4,5]|last}}=========>5
3.length:去列表中列表的長度
{{[1,2,3,4,5]|length}}=====>5
4.sum:對列表中元素進行求和
{{[1,2,3,4,5]|sum}}=========>15
5.sort:對列表元素進行升序
sort:對列表元素進行升序====>[1, 2, 3, 4, 5]
6.sort(reverse=true):對列表元素進行降序
{{[1,2,3,4,5]|sort(reverse=true)}}=======>[5, 4, 3, 2, 1]
7.join:對列表元素進行拼接
{{['a',1,'b',2,'c','d']|join('.')}}=======>a.1.b.2.c.d
自定義模板過濾器:
過濾器的本質是函式。當模板內建的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種實現方式:一種是通過Flask應用物件的add_template_filter方法。還可以通過裝飾器來實現自定義過濾器。