2009-08-07 7 views
26

En Jinja2, j'ai un modèle de base comme celui-ci:Plusieurs blocs de même nom dans Jinja2

<title>{% block title %}{% endblock %} - example.com</title> 
[...] 

<h1> 
    {% block title %}{% endblock %} - example.com 
</h1> 

Jinja2, puis, échoue avec le message suivant:

lines = [self.message, ' ' + location] 
: block 'title' defined twice 

Il doit être maintenant évident quant à ce que j'essaie de faire - d'avoir le même titre à deux endroits: le tag TITLE et le tag H1, mais la partie du titre est en réalité fournie par d'autres templates dérivés.

Comment cela se fait-il typiquement?

Répondre

53

Comme le montrent here, la définition d'un bloc crée une macro avec le nom du bloc dans l'objet « auto » spécial:

<title>{% block title %}{% endblock %} - example.com</title> 
[...] 

<h1> 
    {{ self.title() }} - example.com 
</h1> 
Questions connexes