如何自定義模板過濾器?

2021-08-21 22:39:29 字數 1549 閱讀 6765

什麼是過濾器?

過濾器相當於乙個函式,其作用於模板中的變數。過濾器將變數傳入引數中,爾後根據本身功能進行過濾後,將結果返回到模板頁面中。

什麼情況下需要用到自定義過濾器?

當內建過濾器不能滿足我們專案需求時,就須用到自定義過濾器!

自定義過濾器如何定義?

我們先寫乙個demo,然後通過這個demo來告訴大家如何自定義乙個過濾器!

新建乙個test.py檔案,**如下:

from flask import flask,render_template

def index():

content =

return render_template("test.html",**content)

if __name__ == "__main__":

再新建乙個test.html檔案,其**如下:

執行test.py檔案,走你!!執行結果如下:

假設我們現在有個需求,什麼需求呢?把"hello python,python wolrd python!"這個字串中的所有python去掉。怎麼通過過濾器來實現這個效果呢?

首先,我們新建乙個函式(過濾器本身就是乙個函式),**如下:

def cut(value):

value = value.replace("hello","")

return value

**解析:

將"hello python,python wolrd python!"這個字串作為引數傳入cut這個函式中,經過replace後把結果返回到模板中!

函式寫好了,是不是就完事了呢?當然不是!!函式寫好後,我們還得把這個函式註冊到jinja模板中。過濾器完整**如下:

#template_filter:可理解過模板過濾

#my_cut為過濾器的名字

def cut(value):

value = value.replace("hello", "")

return value

過濾器寫好後,我們再執行試試!

咦!!結果怎麼沒變!!原因很簡單,因為沒有在模板檔案中的變數呼叫我們自定義的過濾器(關鍵**如下)

我們再執行試試,結果如我們所願!

Django自定義模板過濾器

比如,現在通過資料採集,得到了全國3億人的生日,然後要在前端進行展示,但是,由於資料 多處,導致生日的格式各種各樣,比如 1983 02 03 2016年4月16日,這個時候如果資料採集過程當中沒有進行資料過濾,就需要有一種功能針對每一條資料的日期進行修改。這時候就需要用到過濾器了。在templat...

自定義過濾器

這裡的過濾器的作用主要是在業務邏輯裡面判斷,傳遞的引數是否有誤,然後在實現類裡面去判斷具體的業務資料,執行流程和servlet的過濾器相類似,但是執行時機和作用大不相同,servlet的執行時機是在請求資源,在達到control之前去執行,通過執行鏈,我們的這個過濾器是在control裡,如下.先定...

自定義過濾器和全域性過濾器

過濾器中必須有返回值 一般使用花括號 插值,管道符前是要過濾的元素,管道符之後是過濾方法 p 過濾方法中有乙個引數,這個引數就是傳進來的要過濾的元素 過濾器 filters 使用過濾器時出現死迴圈 因為在將原陣列排序後賦值給原陣列,引用空間沒有變化,過濾一直在執行 解決辦法 使用擴充套件符將陣列賦值...