flask的jinja2自定義過濾器
阿新 • • 發佈:2018-12-14
自定義過濾器
過濾器的本質是函式。當模板內建的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種實現方式:
- 一種是通過Flask應用物件的 add_template_filter 方法
- 通過裝飾器來實現自定義過濾器
重要:自定義的過濾器名稱如果和內建的過濾器重名,會覆蓋內建的過濾器。
需求:新增列表反轉的過濾器
方式一
通過呼叫應用程式例項的 add_template_filter 方法實現自定義過濾器。該方法第一個引數是函式名,第二個引數是自定義的過濾器名稱:
def do_listreverse(li): # 通過原列表建立一個新列表 temp_li = list(li) # 將新列表進行返轉 temp_li.reverse() return temp_li app.add_template_filter(do_listreverse,'lireverse')
方式二
用裝飾器來實現自定義過濾器。裝飾器傳入的引數是自定義的過濾器名稱。
@app.template_filter('lireverse')
def do_listreverse(li):
# 通過原列表建立一個新列表
temp_li = list(li)
# 將新列表進行返轉
temp_li.reverse()
return temp_li
- 在 html 中使用該自定義過濾器
<br/> my_array 原內容:{{ my_array }} <br/> my_array 反轉:{{ my_array | lireverse }}
- 執行結果
my_array 原內容:[3, 4, 2, 1, 7, 9]
my_array 反轉:[9, 7, 1, 2, 4, 3]