2013-07-08 16 views
8

Mam szablon mako A, który zawiera szablon mako B więcej niż jeden raz. Mako szablon B oczekuje pewnych argumentów i muszę ustawić je na różne wartości w include.Czy można przekazywać zmienne argumenty do znacznika include w Mako?

W 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'" 
    /> 

W B.mak:

<%page args="lItems, foo"/> 
%for dItem in lItems: 
    etc 

Czy coś takiego w ogóle możliwe? Wiem, że zadziała, jeśli ustawię lItems na 'some_value' i 'some_other_value' (tj. Ciągi zakodowane bezpośrednio w A.mak), ale chcę renderować A.mak z some_variable = [some,craze,list] i some_other_variable = [some,other,craze,list].

Powyższy kod daje mi błąd:

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

Próbowałem też robi obejmuje tak:

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

ale to błąd składni ...

spróbowałem użycie def też:

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

i otrzymałem NameError: Undefined.

Moje pytanie brzmi: jak przekazać zmienne do szablonów "wewnątrz" szablonu?

Odpowiedz

4

Byłaś prawie tam:

W A.mak:

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

W B.mak:

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

Docs mieć przykład: http://docs.makotemplates.org /en/latest/syntax.html#include – Javier

Powiązane problemy