Ich versuche, einen Weg zu rufen def Vorlagen durch die Daten im Kontext bestimmt zu finden.Wie rufe ich Vorlage defs mit Namen nur zur Laufzeit in der Sprache Python-Vorlage bekannt Mako?
Bearbeiten: Eine einfachere Instanz der gleichen Frage.
Es ist möglich, den Wert eines Objekts im Kontext zu emittieren:
# in python
ctx = Context(buffer, website='stackoverflow.com')
# in mako
<%def name="body()">
I visit ${website} all the time.
</%def>
Produziert:
I visit stackoverflow.com all the time.
Ich möchte eine Anpassung der Ausgabe ermöglichen, auf der Grundlage der Daten.
# in python
ctx = Context(buffer, website='stackoverflow.com', format='text')
# in mako
<%def name="body()">
I visit ${(format + '_link')(website)} all the time. <-- Made up syntax.
</%def>
<%def name='html_link(w)'>
<a href='http://${w}'>${w}</a>
</%def>
<%def name='text_link(w)'>
${w}
</%def>
das format
Attribut im Kontext ändern sollte die Ausgabe von
I visit stackoverflow.com all the time.
zu
I visit <a href='http://stackoverflow.com'>stackoverflow.com</a> all the time.
Die aus Syntax ändern ich in der body
def
verwendet haben, ist offensichtlich falsch . Was würde ich benötigen, um eine Vorlage dynamisch anzugeben und sie dann aufzurufen?
Können Sie beschreiben, was Ihr Ziel ist? Klar, das ist verschachtelt - und es gibt etwas, das Sie gerne erledigen würden, das könnte einfacher gemacht werden. Was ist der Grund dafür? –