您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“django如何自定義模板標簽”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“django如何自定義模板標簽”這篇文章吧。
代碼布局
自定義模板標簽必須位于django的某個應用中
該應用中新建templatetags目錄,和models.py,views.py同一級別
結構如下:
polls/ __init__.py models.py templatetags/ __init__.py poll_extras.py views.py
模板中調用標簽:
{% load poll_extras %}
為了讓load標簽工作,該標簽所在應用必須在INSTALLED_APPS中
templatetags里有多少個模塊沒有限制,因為{% load %}會載入給定模塊名的標簽過濾器,而不是應用的名稱
為了成為一個可用的標簽庫,必須注冊,放在模塊頂部
from django import template register=template.Library()
自定義標簽過濾器
自定義過濾器就是一個帶有一個或兩個參數的Python 函數:
(輸入的)變量的值 —— 不一定是字符串形式。
參數的值 —— 可以有一個初始值,或者完全不要這個參數。
例如,在{{ var|foo:"bar" }}中,foo過濾器應當傳入變量var和參數 "bar"。
def cut(value, arg): """Removes all values of arg from the given string""" return value.replace(arg, '')
下面是這個過濾器應該如何使用:
{{ somevariable|cut:"0" }}
大多數過濾器沒有參數。在這種情況下,你的函數不帶這個參數即可。示例︰
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()方法需要兩個參數:
過濾器的名稱(一個字符串對象)
編譯的函數 – 一個Python函數(不要把函數名寫成字符串)
方法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<body> {% load my %} {{ 'tags'|myadd }} {{ 'tags'|mycul:5 }} </body>
結果:
tags************************ tagstagstagstagstags
以上是“django如何自定義模板標簽”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。