{% load %}
标签进行加载。但是在自定义标签之前,需要我们做一些准备工作,如下所示:
提示:{% load xxx%} 将会载入给定模块名下的标签或者过滤器,而不是 app 应用下的中所有标签和过滤器。
from django import template register = template.Library()
#注册自定义简单标签 @register.simple_tag def addstr_tag(strs): return 'Hello'%strsaddstr_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号
广州京杭网络科技有限公司 版权所有