{% load %}标签进行加载。但是在自定义标签之前,需要我们做一些准备工作,如下所示:
提示:{% load xxx%} 将会载入给定模块名下的标签或者过滤器,而不是 app 应用下的中所有标签和过滤器。
from django import template register = template.Library()
#注册自定义简单标签
@register.simple_tag
def addstr_tag(strs):
return 'Hello'%strs
addstr_tag 函数使用 register.simple_tag 进行装饰,目的是能够将 addstr_tag 注册到模板系统中。然后我们就可以使用 {% load %} 加载自定义的标签了,使用如下方式:{% load index_tags %}
加载之后我们就可以使用我们的自定义标签了,通过举例看一下实际的效果:
In [1]: from django.template import Template,Context
In [2]: t=Template("""
...: {% load index_tags %}
...: {% addstr_tag 'Django BookStore' %}
...:
...: """)
...: t.render(Context())
Out[2]: 'Hello Django BookStore'
上述就是一个简单标签的实现过程,自定义不同类型的标签它们的过程是一样的,而且我们还可以通过 name 参数给自定义的标签其别名,这样在使用 load 加载时就可以直接使用别名了,如下所示:@register.simple_tag(name='abc')
<p>{{ hello }}</p>
在 index_tags 中自定义引用标签:
#注册自定义引用标签
@register.inclusion_tag('inclusion.html',takes_context=True)
#定义函数渲染模板文件 inclusion.html
def add_webname_tag(context,namestr): #使用takes_context=True此时第一个参数必须为context
return {'hello':'%s %s'%(context['varible'],namestr)}
我可以看出,引用标签使用 register.inclusion_tag 来注册,它的第一个参数用来指定要被渲染的模板文件,takes_context=True 参数可以让我们访问模板的当前环境上下文,并将当前环境上下文中的参数和值作为字典传入到函数的 contex 参数中,当使用 take_context=True 时,注册标签函数的第一个参数必需为 context。
In [1]: from django.template import Template,Context
In [2]: t=Template("""
...: {% load index_tags %}
...: {% add_webname_tag 'C 语言中文网' %}
...:
...: """)
...: t.render(Context({'varible':'Hello'}))
Out[2]: '\n\n<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <title>C语言中文网</title>\n</head>\n<body>\n<p>Hello C 语言中文网</p>\n\n</body>\n</html>\n\n'
从输出的结果可以得出,引用标签对 inclusion.html 模板进行了渲染,将{{ hello }}变量渲染成了 Hello C 语言中文网。
#注册自定义赋值标签
@register.simple_tag
def test_as_tag(strs):
return 'Hello Test Tag-%s'%strs
使用自定义赋值标签,实例如下所示:
In [1]: from django.template import Template,Context
In [2]: t=Template("""
...: {% load index_tags %}
...: {% test_as_tag '语言中文网欢迎你' as test %}
...: <p>{{ test }}</p>
...: """)
...: t.render(Context())
Out[2]: '\n\n\n<p>Hello Test Tag-语言中文网欢迎你</p>\n'
自定义标签看似简单,但需要我们灵活的掌握它们,使用最合适的方式,最适用的逻辑让复杂的问题变得简单化。这是一个慢慢锻炼的过程,而理解了它最基本的使用方法,是漫漫征程中的第一步。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有