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
请尽可能回答主要问题(是否可以自定义标签?),然后提出如何做我想做的建议,谢谢:)
答案 0 :(得分:4)
"namespaces" doc似乎描述了你的目标,特别是:
命名空间还可以从模块导入常规Python函数。这些callables需要至少使用一个参数
context
,Context
的实例。一些/ 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>