您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Django中编写模版节点及注册标签的方法

5b51 2022/1/14 8:21:01 python 字数 4176 阅读 494 来源 www.jb51.cc/python

编写模板节点 编写自定义标签的第二步就是定义一个拥有render()方法的Node子类。继续前面的例子,我们需要定义CurrentTimeNode:

概述

编写模板节点

编写自定义标签的第二步就是定义一个拥有 render() 方法的 Node 子类。 继续前面的例子,我们需要定义 CurrentTimeNode :

import datetime

class CurrentTimeNode(template.Node):
 def __init__(self,format_string):
  self.format_string = str(format_string)

 def render(self,context):
  Now = datetime.datetime.Now()
  return Now.strftime(self.format_string)

这两个函数__init__() 和 render() )与模板处理中的两步(编译与渲染)直接对应。 这样,初始化函数仅仅需要存储后面要用到的格式字符串,而 render() 函数才做真正的工作。

与模板过滤器一样,这些渲染函数应该静静地捕获错误,而不是抛出错误。 模板标签只允许在编译的时候抛出错误
注册标签

最后,你需要用你模块的Library 实例注册这个标签注册自定义标签注册自定义过滤器非常类似(如前文所述)。 只需实例化一个 template.Library 实例然后调用它的 tag() 方法。 例如:

register.tag('current_time',do_current_time)

tag() 方法需要两个参数:

注册过滤器类似,也可以在Python2.4及其以上版本中使用 register.tag装饰器:

@register.tag(name="current_time")
def do_current_time(parser,token):
 # ...

@register.tag
def shout(parser,token):
 # ...

如果你像在第二个例子中那样忽略 name 参数的话,Django会使用函数名称作为标签名称

总结

以上是编程之家为你收集整理的在Django中编写模版节点及注册标签的方法全部内容,希望文章能够帮你解决在Django中编写模版节点及注册标签的方法所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶