2013-05-19 1 views
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?

+1

$ {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. –

+0

Vous voudrez probablement aussi changer name = "title()" en nom = "$ {title}" –

+0

@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

Répondre

0

Pour utiliser les variables rendus - vous les utilisez avec ${ title } pas $(title)

Questions connexes