2
J'utilise CherryPy avec des modèles Mako. Je suis en train de travailler sur la façon de passer aruguments de l'appel initial (dans cet exemple title
):Passer la variable du modèle Mako appelé au modèle hérité
class Landing(object):
def index(self):
tmpl = lookup.get_template("index.html")
return tmpl.render(title="Hello World")
index.exposed = True
à index.html
:
<%inherit file="base.html"/>
<%def name="title()">$(title)</%def>
this is the body content
puis au modèle base.html
hérité:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>$(self.title())</title>
</head>
<body>
<h1>$(parent.title())</h1>
${self.body()}
</body>
</html>
J'ai essayé self.title
et parent.title
et aucun ne fonctionne. Comment puis-je transmettre la variable de l'appel initial?
$ {title} devrait fonctionner. Utilisez donc des accolades au lieu de crochets réguliers. Et ce n'est pas un appel de fonction, alors supprimez le() à la fin. –
Vous voudrez probablement aussi changer name = "title()" en nom = "$ {title}" –
@basvandenberg merci, c'était ça! Si vous l'ajoutez comme réponse, je l'accepterai. J'ai essayé de remplacer title() par $ {title} mais j'ai eu l'erreur: 'mako.exceptions.CompileException: Attibute 'name' dans la balise 'def' n'autorise pas les expressions incorporées dans le fichier 'template/index.html' à la ligne: 2 char: 1' – xylar