带有 mako 脚本的循环输出的一行

One-liner for loop output with mako script

是否可以将 mako 脚本的 for 循环仅填充到一行?到目前为止,我看到的所有示例都会创建多行,并且在一行中编写 mako for 循环会导致 mako 错误。

填充 mako 模板的示例代码:

data = ['foo', 'bar', 'baz']
template = Template(filename='test.mak')
template.render(data=data)

模板文件test.mak(创建多行,这不是我想要的):

items=
% for d in data:
${d}${'' if loop.last else ','}
% endfor

预期的扩展 mako 脚本输出应该是 items=foo,bar,baz

我目前的解决方法是 items=${','.join(data)} 作为 mako 脚本,但我想知道这是否也适用于内置的 mako 指令。

正如 mako documentation 所说,您可以通过在行尾添加反斜杠 \ 来消耗行尾字符。所以你的模板应该是这样的:

items=\
% for d in data:
${d}${'' if loop.last else ','}\
% endfor