2

mako 的新手,在文档中没有找到...

我想做的一件事是:

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

它的工作原理如下:

如果X[n](here, X[12]) 变量是 int 或字符串,则使用x = X[12]
=> With呈现内容X[12] = 23,它会呈现: blabla 23

else ifX[n]是一个列表,然后做一个循环,为 => Withfor的每个值重复内容,它会呈现: x in X[n]
X[12] = [1, 2, 'bla']

blabla 1
blabla 2
blabla bla

如果可能,请尝试回答主要问题(是否可以做自定义标签?),然后再就如何做我想做的事情提供建议,谢谢:)

4

1 回答 1

5

命名空间”文档似乎描述了您所追求的,特别是:

命名空间还可以从模块中导入常规 Python 函数。这些可调用对象至少需要一个参数,context一个Context. 模块文件 some/module.py 可能包含可调用对象:

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

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

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

${hw.my_tag()}

..和:

“自定义标签”格式主要用于识别正文内容的命名空间函数,在 Mako 中称为“嵌入内容的定义”:

<%mynamespace:somefunction arg1="some argument" args="x, y">
    Some record: ${x}, ${y}
</%mynamespace:somefunction>
于 2013-08-07T10:42:24.237 回答