是否可以在Mako中创建新标签?

时间:2013-08-06 19:05:38

标签: python mako

mako新手,在文档中找不到......

我想做的其中一件事是:

<%mytag n=12>
blabla ${x}
</%mytag>

的作用如下:

如果X[n](此处为X[12])变量为int或字符串,则使用x = X[12]呈现内容 =&GT;使用X[12] = 23,它会呈现:blabla 23

如果X[n]是列表,则执行for循环,重复x in X[n]每个值的内容 =&GT;使用X[12] = [1, 2, 'bla'],它会呈现:

blabla 1
blabla 2
blabla bla

请尽可能回答主要问题(是否可以自定义标签?),然后提出如何做我想做的建议,谢谢:)

1 个答案:

答案 0 :(得分:4)

"namespaces" doc似乎描述了你的目标,特别是:

  

命名空间还可以从模块导入常规Python函数。这些callables需要至少使用一个参数contextContext的实例。一些/ module.py模块文件可能包含callable:

def my_tag(context):
    context.write("hello world")
    return ''
     

模板可以通过以下方式使用此模块:

<%namespace name="hw" module="some.module"/>

${hw.my_tag()}

..和

  

“自定义标记”格式主要用于命名空间函数   它识别身体内容,这在Mako被称为“def with with   嵌入内容“:

<%mynamespace:somefunction arg1="some argument" args="x, y">
    Some record: ${x}, ${y}
</%mynamespace:somefunction>