10

我有一个 mako 模板 A,其中不止一次包含 mako 模板 B。Mako 模板 B 需要某些参数,我需要在包含时将它们设置为不同的值。

在 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]and渲染 A.mak some_other_variable = [some,other,craze,list]

上面的代码给了我错误:

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

所以我的问题是:如何在模板中将变量传递给模板?

4

1 回答 1

8

你几乎在那里:

在 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
于 2015-01-29T09:43:48.623 回答