自定义一个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 = '<h2>%s</h2>' % 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>
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。