您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Django5中怎么自定義過濾器和標(biāo)簽,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
目錄結(jié)構(gòu)
1.(創(chuàng)建)在主目錄下創(chuàng)建名為common的python包(自帶__init__文件)。
2.(注冊(cè))將common注冊(cè)到setting文件里的APP列表中。
3.(創(chuàng)建)在common目錄下創(chuàng)建名為templatetags的python包(自帶__init__文件、存放自定義過濾器和標(biāo)簽文件)
過濾器分析
{{ var|foo:“bar” }}(變量,過濾器,參數(shù))
自定義過濾器就是一個(gè)帶有一個(gè)或兩個(gè)參數(shù)的Python 函數(shù):
(輸入的)變量的值 —— 不一定是字符串形式。
參數(shù)的值 —— 可以有一個(gè)初始值,或者完全不要這個(gè)參數(shù)。
注冊(cè)和使用自定義過濾器
from django import template
register = template.Library() # 名字是固定的,生成實(shí)例化對(duì)象
django.template.Library.filter()的使用方法
1.Library.filter(“name”, func)方法需要兩個(gè)參數(shù):
a. 過濾器的名稱(一個(gè)字符串對(duì)象)
b. 編譯的函數(shù) – 一個(gè)Python函數(shù)(先編寫函數(shù),不要把函數(shù)名寫成字符串)
2.可以把register.filter()用作裝飾器;
@register.filter、@register.filter(“name”)
沒有聲明 name 參數(shù),Django將使用函數(shù)名作為過濾器的名字。
自定義過濾器的使用同正常過濾器
設(shè)置和使用自定義標(biāo)簽
from django import template
register = template.Library() # 名字是固定的,生成實(shí)例化對(duì)象
1.設(shè)置標(biāo)簽
如果需要傳參上下文參數(shù):takes_context = True寫于裝飾器中
簡(jiǎn)單標(biāo)簽無錫人流醫(yī)院哪家好 http://www.wxbhnkyy120.com/
django.template.Libarary.simple_tag()# 此句作為函數(shù)裝飾器
包含標(biāo)簽(包含標(biāo)簽的功能是可以通過渲染另外一個(gè)模板來顯示一些數(shù)據(jù))
在模板html文件中編寫代碼
# 模板文件中
{% for i in a_list %}
{{i}}
{% endfor %}
標(biāo)簽.py文件中通過調(diào)用
# 標(biāo)簽文件中
django.template.Libarary.inclusion_tag(‘模板標(biāo)簽文件路徑’)# 此句代碼作為裝飾器
def show_result():
m = ['a', 'b', 'c']# 此示例是不傳參的情況
return {'a_list':m}
2.使用:{% load mytags %}加載自定義標(biāo)簽過濾器文件
直接通{% 函數(shù)名 %}使用該標(biāo)簽
關(guān)于Django5中怎么自定義過濾器和標(biāo)簽就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。