1. 程式人生 > 實用技巧 >flask 模板過濾器及自定義模板過濾器

flask 模板過濾器及自定義模板過濾器

內建的模板過濾器:

過濾器的本質就是函式。有時候我們不僅僅只是需要輸出變數的值,我們還需要修改變數的顯示,甚至格式化、運算等等,這就用到了過濾器。
過濾器的使用方式為:變數名 | 過濾器。 過濾器名寫在變數名後面,中間用 | 分隔。


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:去除左右兩邊的空格,不會轉義&nbsp;--> {{' l ov e '|trim}}==================>l ov e <br>{{' l&nbsp;&nbsp;&nbsp;&nbsp; ov e '|trim}}==========l&nbsp;&nbsp;&nbsp;&nbsp;
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.列表過濾器:

  1. 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方法。還可以通過裝飾器來實現自定義過濾器。