Jinja2模版語言自定義filter的使用

2021-06-17 22:36:09 字數 901 閱讀 9975

jinja2模版語言,自帶有一些filter,能夠在前端的模版中控制資料按照相應的方式顯示。比如以下兩種filter,分別能在前端控制数字的近似精度顯示和根據字串長度補齊:

round(value, precision=0, method='common')

} -> 43.0

} -> 42.5

truncate(s, length=255, killwords=false, end='...')

} -> "foo ..."

} -> "foo b..."

但是,有時候自帶的filter的靈活性有限,不能滿足我們的要求,這時候便用到了自定義filter。在查詢自定義filter相關資料的時候,還是能找到一些。可以根據這些資料了解到,實際上,filter是相應函式的呼叫。自定義filter之需要做兩項工作:一是寫乙個filter函式;在當前環境中註冊filter。

filter函式的第乙個引數,是在模版中運用filter的html模版成分。這裡我們實現的是乙個要將字串末尾的數字不顯示的功能,為此,要寫如下filter函式:

import re

def rm_num_at_end(name):

result=re.sub("\s\d+$","",name)

return result

然後在環境中註冊該filter,**如下:

env.filters['rm_end_num'] = rm_num_at_end

這樣,便生成了乙個新的自定義的filter。然後,我們就可以像使用jinja2自帶的filter一樣使用該filter了。(這裡,有的字串末尾有空格,後面跟乙個數字,該filter實現的是不顯示字串末尾的空格和數字。)

Flask的jinja2模板中自定義過濾器的使用

大部分的模板引擎都是支援過濾器功能的,jinja2也不例外,它提供了豐富的內建過濾器,但是有些時候還是沒辦法滿足我們的需求,好在jinja2支援自定義過濾器,下面是乙個簡單的例子。下面的例子完成了自定義過濾器,包括過濾器有乙個引數和多個引數的使用 coding utf 8 author guoqia...

ansible基礎 Jinja2模版 測試

注 本文demo使用ansible2.7穩定版 jinja2的測試語句被用來評估乙個條件表示式,並且最終返回true或false,經常和 when 語句搭配使用。測試語句和過濾器的相同點 測試語句的條件表示式也在控制端執行,在目的主機端生效。測試語句和過濾器的不同點 測試語句的語法很簡單,寫法如下 ...

flask 渲染jinja2模版和傳參

渲染模版 html檔案 a 模版檔案 html 放入到template目錄下,專案啟動的時候會從template目錄裡查詢,b 從flask中匯入 render tempalte 函式 c 在檢視函式中,使用render template函式,渲染模版 只需要填寫模版名稱即可 示例 from fla...