溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Django 自定義html 標(biāo)簽

發(fā)布時(shí)間:2020-07-10 07:31:09 來源:網(wǎng)絡(luò) 閱讀:667 作者:lvnian2009 欄目:開發(fā)技術(shù)

    



自定義一個(gè)html標(biāo)簽

參考:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
    第一步:在 app下創(chuàng)建templatetags包,也就是本案例的bbs下創(chuàng)建templatetags包如下:
    bbs/templatetags/__init__.py
    bbs/templatetags/poll_extras.py


    第二步:編寫poll_extras.py文件,編寫成你需要的標(biāo)簽,下面編寫的是,把數(shù)據(jù)轉(zhuǎn)為大寫字母


        from django import  template     ###必須應(yīng)用template模塊
        register = template.Library()

        @register.filter
        def test_tag(data):
            print 'tag:::  ' ,data
            return data.upper()


    第三步:在引用的html文件中使用
    {% load poll_extras %}



    第四步:在html中應(yīng)用這個(gè)標(biāo)簽,如下: 把作者名稱改為大寫,它不能解析html內(nèi)容
    <a>{{ article.author.name|test_tag }}</a>     ## 這中調(diào)用方式用于@register.filter裝飾器,


    如果是@register.simple_tag這種裝飾器就需要用下面的調(diào)用方法,且這中裝飾器可以解析html格式
    <a>{% test_tag2 article.author.name %}</a>



from django.utils.safestring import mark_safe
from django import  template     ###必須應(yīng)用template模塊
register = template.Library()

@register.filter
def test_tag(data):
    print 'tag:::  ' ,data
    return data.upper()


@register.simple_tag
def test_tag2(data):
    print 'tag:::  ' ,data
    #return data.upper()
    a = '<h2>%s</h2>' % data    ##@register.simple_tag可以解析html返回,,

    return mark_safe(a)     
    ##在新版的django中,如果需要用@register.simple_tag解析html文本,需要額外添加 :
    from django.utils.safestring import mark_safe
    這個(gè)make_safe模塊才可以   
    如果是@register.simple_tag這種裝飾器就需要用下面的調(diào)用方法,且這中裝飾器可以解析html格式
    <a>{% test_tag2 article.author.name %}</a>





向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI