2013-07-08 63 views
8

我有一個包含mako模板B的mako模板A不止一次。 Mako模板B期望某些參數,我需要將它們設置爲include上的不同值。是否有可能將可變參數傳遞給Mako中的包含標記?

在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

所以我的問題是:如何將變量傳遞給'模板內'的模板?

回答

4

你幾乎有:

在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 
+0

文檔有一個例子:http://docs.makotemplates.org /en/latest/syntax.html#include – Javier

相關問題