十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要為大家展示了“django如何自定義模板標簽”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“django如何自定義模板標簽”這篇文章吧。

代碼布局
自定義模板標簽必須位于django的某個應(yīng)用中
該應(yīng)用中新建templatetags目錄,和models.py,views.py同一級別
結(jié)構(gòu)如下:
polls/ __init__.py models.py templatetags/ __init__.py poll_extras.py views.py
模板中調(diào)用標簽:
{% load poll_extras %}為了讓load標簽工作,該標簽所在應(yīng)用必須在INSTALLED_APPS中
templatetags里有多少個模塊沒有限制,因為{% load %}會載入給定模塊名的標簽過濾器,而不是應(yīng)用的名稱
為了成為一個可用的標簽庫,必須注冊,放在模塊頂部
from django import template register=template.Library()
自定義標簽過濾器
自定義過濾器就是一個帶有一個或兩個參數(shù)的Python 函數(shù):
(輸入的)變量的值 —— 不一定是字符串形式。
參數(shù)的值 —— 可以有一個初始值,或者完全不要這個參數(shù)。
例如,在{{ var|foo:"bar" }}中,foo過濾器應(yīng)當(dāng)傳入變量var和參數(shù) "bar"。
def cut(value, arg): """Removes all values of arg from the given string""" return value.replace(arg, '')
下面是這個過濾器應(yīng)該如何使用:
{{ somevariable|cut:"0" }}大多數(shù)過濾器沒有參數(shù)。在這種情況下,你的函數(shù)不帶這個參數(shù)即可。示例︰
def lower(value): # Only one argument. """Converts a string into all lowercase""" return value.lower()
注冊自定義過濾器
方法1:
register.filter('cut', cut)
register.filter('lower', lower)Library.filter()方法需要兩個參數(shù):
過濾器的名稱(一個字符串對象)
編譯的函數(shù) – 一個Python函數(shù)(不要把函數(shù)名寫成字符串)
方法2:register.filter()用作裝飾器
@register.filter(name='cut') def cut(value, arg): return value.replace(arg, '') @register.filter def lower(value): return value.lower()
下邊是實例:

my.pyfrom django import template register=template.Library() @register.filter def myadd(param): res=param+"************************" return res @register.filter def mycul(param,num): res=param*num return res
views.pydef tags(request):
print("hello")
return render(request,'mytags.html')tags.html
{% load my %}
{{ 'tags'|myadd }}
{{ 'tags'|mycul:5 }}
結(jié)果:
tags************************ tagstagstagstagstags
以上是“django如何自定義模板標簽”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。