我有一个包含多个mako模板B的mako模板A。 Mako模板B需要某些参数,因此我需要在include上将它们设置为不同的值。
在A.mak中:
<%include
file="/components/B.mak"
args="lItems=some_variable, foo='bar'"
/>
<%include
file="/components/B.mak"
args="lItems=some_other_variable, foo='moooo'"
/>
在B.mak中:
<%page args="lItems, foo"/>
%for dItem in lItems:
etc
这样的事情有可能吗?我知道如果将lItems设置为'some_value'和'some_other_value'(即:直接编码为A.mak的字符串),但我想使用
some_variable = [some,craze,list]
和some_other_variable = [some,other,craze,list]
呈现A.mak,它将可以正常工作。上面的代码给我错误:
File ".../mako/runtime.py", line 202, in __str__
raise NameError("Undefined")
NameError: Undefined
我也尝试这样做,包括这样:
<%include
file="/components/B.mak"
args="lItems=${some_other_variable}, foo='moooo'"
/>
但这是语法错误...
我也使用def尝试了它:
${the_B_def(foo='bar',lItems=some_variable)}
并得到了
NameError: Undefined
。所以我的问题是:如何在模板内将变量传递给模板?
最佳答案
您几乎在那里:
在A.mak中:
<%include
file="/components/B.mak"
args="lItems=some_other_variable, foo='moooo'"
/>
在B.mak中:
<%page args="lItems, foo"/>
%for dItem in lItems:
${foo}
%endfor