我有一个包含多个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

09-09 23:29