Django自定义标签

it2022-05-05  149

自定义标签

安装和配置与自定义过滤器相似,参见https://blog.csdn.net/qq_39112101/article/details/96434326

设置的代码分为两个部分:

第一部分功能是注册和参数处理,第一部分是一个函数;

第二部分是一个模板节点类,用来处理标签的逻辑。

具体的代码编写如下

和自定义过滤器放在同一份python文件里面

import re from django import template #引入django的template register = template.Library() #调用template下的方法 @register.tag(name="addNum") #给自定义标签起的名字 def addNum(parser,token): #前台写的内容为{% addNum "1" %},把 addNum "1" 给了token """ 用来接收标签的内容进行切分处理 :param parser: 用来编写携带end的标签使用 :param token:标签里面的内容 :return:标签内容处理的节点类 """ print(token) try: tag_name,tag_content = token.split_contents() #以空格分隔开token的内容, # tag_name,tag_content的值分别为addNum和字符串"1" except ValueError as e: msg = str(e) raise template.TemplateSyntaxError(msg) return AddNum(tag_content[1:-1]) #截取字符串"1",获得1之后传给类,返回调用类AddNum的结果 class AddNum(template.Node): """ 把传入的参数在render中使用,类会自动调用render方法 """ def __init__(self,format_string): self.format_string = format_string def render(self, context): result = int(self.format_string)+1 return result

上面代码的功能是对传过来的数据执行加一操作

前端的示例代码很简单就一句

{% addNum "1" %}

结果如下:

这样就完成了加一的操作,自定义标签能够比自定义过滤器更好的处理多参数问题。


最新回复(0)