2013-07-08 13 views
8

私はmakoテンプレートBを2回以上含んでいます。 MakoテンプレートBは特定の引数を期待しており、インクルード時に異なる値に設定する必要があります。 A.makでMakoのインクルードタグに可変引数を渡すことはできますか?

:B.makで

<%include 
    file="/components/B.mak" 
    args="lItems=some_variable, foo='bar'" 
    /> 

<%include 
    file="/components/B.mak" 
    args="lItems=some_other_variable, foo='moooo'" 
    /> 

<%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をレンダリングしたいと思います。

上記のコードは私にエラーを与える:

<%include 
    file="/components/B.mak" 
    args="lItems=${some_other_variable}, foo='moooo'" 
    /> 

それは構文エラーだ...

私はそれを試してみました:

File ".../mako/runtime.py", line 202, in __str__ 
    raise NameError("Undefined") 
NameError: Undefined 

また、私はそうのように含まれてやってみましたdefを使用しても:

${the_B_def(foo='bar',lItems=some_variable)} 

となり、NameError: Undefinedとなります。

私の質問は、どのように変数をテンプレート内の 'テンプレート'に渡すことができますか?

答えて

4

あなたはほとんどそこにあった。A.makで

:B.makで

<%include 
    file="/components/B.mak" 
    args="lItems=some_other_variable, foo='moooo'" 
    /> 

<%page args="lItems, foo"/> 
%for dItem in lItems: 
    ${foo} 
%endfor 
+0

ドキュメントは例があります。http://docs.makotemplates.org /en/latest/syntax.html#include – Javier

関連する問題