码迷,mamicode.com
首页 > Web开发 > 详细

Django 自定义html 标签

时间:2016-10-06 23:24:16      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:自定义   django   html   

    



自定义一个html标签

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


    第二步:编写poll_extras.py文件,编写成你需要的标签,下面编写的是,把数据转为大写字母


        from django import  template     ###必须应用template模块
        register = template.Library()

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


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



    第四步:在html中应用这个标签,如下: 把作者名称改为大写,它不能解析html内容
    <a>{{ article.author.name|test_tag }}</a>     ## 这中调用方式用于@register.filter装饰器,


    如果是@register.simple_tag这种装饰器就需要用下面的调用方法,且这中装饰器可以解析html格式
    <a>{% test_tag2 article.author.name %}</a>



from django.utils.safestring import mark_safe
from django import  template     ###必须应用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 = ‘<h1>%s</h1>‘ % data    ##@register.simple_tag可以解析html返回,,

    return mark_safe(a)     
    ##在新版的django中,如果需要用@register.simple_tag解析html文本,需要额外添加 :
    from django.utils.safestring import mark_safe
    这个make_safe模块才可以   
    如果是@register.simple_tag这种装饰器就需要用下面的调用方法,且这中装饰器可以解析html格式
    <a>{% test_tag2 article.author.name %}</a>





本文出自 “奋斗吧” 博客,请务必保留此出处http://lvnian.blog.51cto.com/7155281/1858878

Django 自定义html 标签

标签:自定义   django   html   

原文地址:http://lvnian.blog.51cto.com/7155281/1858878

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!