django 創(chuàng)建過濾器
一、需求來源:
假如有一個(gè)模板文件有一個(gè)字符串變量,這個(gè)字符串變量中不能有任何的空格,而恰恰這個(gè)模板被很多個(gè)視圖函數(shù)多調(diào)用,那么你每次在視圖函數(shù)中穿這個(gè)字符串變量的時(shí)候,都要進(jìn)行字符串的處理,這相對(duì)來說是比較麻煩的,django提供了一種叫做過濾器的方式,可以在模板中進(jìn)行統(tǒng)一處理。
二、自定義模板庫準(zhǔn)備工作:
創(chuàng)建一個(gè)模板庫分兩步走:
第一,決定模板庫應(yīng)該放在哪里。你可以單獨(dú)通過manage.py startapp創(chuàng)建一個(gè)app專門用來存放自定義的模板庫;也可以放在項(xiàng)目中的任何一個(gè)app下面。這里推薦第一種方式,因?yàn)榈谝环N方式寫完后,可以移植到其他項(xiàng)目中使用。不用重復(fù)編寫。但是,無論你采用哪種方式,你都要把存放你模板庫的app添加到settings.py的INSTALLED_APPS中!!!
第二,在以上你選擇的包下,創(chuàng)建一個(gè)名叫templatetags目錄,這個(gè)目錄應(yīng)當(dāng)和models.py和views.py處于同一層次。然后在templatetags中創(chuàng)建兩個(gè)空文件:一個(gè)是__init__.py表示這不是一個(gè)普通的文件夾,這是一個(gè)Python代碼包,另外一個(gè)是你用來存放模板庫的文件(比如:my_template.py)。然后在你需要用到這個(gè)庫文件的模板文件中,使用{% load my_template.py %}進(jìn)行導(dǎo)入,重要的事情再說一遍,你必須把這個(gè)my_template.py所處的app添加到settings.py的INSTALLED_APPS中才有用。
三、創(chuàng)建自定義過濾器:
過濾器實(shí)際上就是一個(gè)帶有一個(gè)或者兩個(gè)參數(shù)的python函數(shù):
需要被過濾的變量 傳遞進(jìn)來的值,該值可以為空例如我們創(chuàng)建一個(gè)將變量的所有空格替換成某個(gè)值的過濾器:
def removespace(value,arg):  return value.replace(' ',arg)然后注冊(cè)近模板中,使用以下代碼進(jìn)行注冊(cè):
from django import templateregister = template.Library()@register.filterdef removespace(value,arg):  return value.replace('',arg)那么你在使用的時(shí)候,只要在模板中使用一下代碼進(jìn)行使用:
{{ variable|removespace:"a" }}那么variable這個(gè)變量中的所有空格都會(huì)被替換成a。
以上就是django 創(chuàng)建過濾器的實(shí)例,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選