2013-07-08 19 views
8

Ich habe eine Mako-Vorlage A, die Mako-Vorlage B mehr als einmal enthält. Mako Template B erwartet bestimmte Argumente und ich muss sie auf unterschiedliche Werte auf Include setzen.Ist es möglich, variable Argumente an das Include-Tag in Mako zu übergeben?

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

In B.mak:

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

Ist diese Art der Sache überhaupt möglich? Ich weiß, dass es funktionieren wird, wenn ich lItems auf 'some_value' und 'some_other_value' setze (dh Strings, die direkt in A.mak codiert sind), aber ich möchte A.mak mit some_variable = [some,craze,list] und some_other_variable = [some,other,craze,list] rendern.

Der obige Code gibt mir den Fehler:

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

Ich versuchte auch, die wie so umfasst dabei:

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

aber das ist ein Syntaxfehler ...

versuchte ich es mit einem def auch:

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

und bekam NameError: Undefined.

Meine Frage ist also: Wie kann ich Variablen an Vorlagen 'innerhalb' einer Vorlage übergeben?

Antwort

4

Sie waren fast da:

In A.mak:

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

In B.mak:

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

Docs haben ein Beispiel: http://docs.makotemplates.org /en/latest/syntax.html#include – Javier