2013-07-08 12 views
8

Ho un modello di mako A che include il modello di mako B più di una volta. Il modello B di Mako si aspetta determinati argomenti e ho bisogno di impostarli su valori diversi su include.È possibile passare argomenti variabili al tag include in Mako?

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 

È questo il genere di cose anche possibile? So che funzionerà se imposto lItems su 'some_value' e 'some_other_value' (es .: stringhe codificate direttamente in A.mak) ma voglio renderizzare A.mak con some_variable = [some,craze,list] e some_other_variable = [some,other,craze,list].

Il codice di cui sopra mi dà l'errore:

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

Ho anche provato a fare la include in questo modo:

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

ma questo è un errore di sintassi ...

ho provato utilizzando un def anche:

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

e ottenuto NameError: Undefined.

Quindi la mia domanda è: come posso passare le variabili ai modelli "all'interno" di un modello?

risposta

4

Si erano quasi arrivati:

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 hanno un esempio: http://docs.makotemplates.org /en/latest/syntax.html#include – Javier