J'essaie de trouver un moyen d'appeler des modèles de définition déterminés par les données disponibles dans le contexte.Comment appeler les defs de template avec des noms connus uniquement lors de l'exécution dans le langage de template Python Mako?
Modifier: Une instance plus simple de la même question.
Il est possible d'émettre la valeur d'un objet dans le contexte:
# in python
ctx = Context(buffer, website='stackoverflow.com')
# in mako
<%def name="body()">
I visit ${website} all the time.
</%def>
Produit:
I visit stackoverflow.com all the time.
Je voudrais permettre une personnalisation de la sortie, sur la base des données.
# 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>
Changer l'attribut format
dans le contexte devrait changer la sortie de
I visit stackoverflow.com all the time.
à
I visit <a href='http://stackoverflow.com'>stackoverflow.com</a> all the time.
La composée syntaxe Je l'ai utilisé dans le body
def
est évidemment faux . De quoi aurais-je besoin pour spécifier dynamiquement un modèle, puis l'appeler?
Pouvez-vous décrire ce que votre objectif est? De toute évidence, c'est compliqué - et il y a quelque chose que vous aimeriez accomplir qui pourrait être fait plus simplement. Quelle est la raison pour essayer cela? –