手机
当前位置:查字典教程网 >脚本专栏 >python >在Django中编写模版节点及注册标签的方法
在Django中编写模版节点及注册标签的方法
摘要:编写模板节点编写自定义标签的第二步就是定义一个拥有render()方法的Node子类。继续前面的例子,我们需要定义CurrentTimeNo...

编写模板节点

编写自定义标签的第二步就是定义一个拥有 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中编写模版节点及注册标签的方法】相关文章:

Python实现扫描指定目录下的子目录及文件的方法

Python中使用动态变量名的方法

python 不关闭控制台的实现方法

使用python编写脚本获取手机当前应用apk的信息

windows下python模拟鼠标点击和键盘输示例

python应用程序在windows下不出现cmd窗口的办法

wxpython中利用线程防止假死的实现方法

python中使用urllib2伪造HTTP报头的2个方法

Python中针对函数处理的特殊方法

python Django模板的使用方法(图文)

精品推荐
分类导航