Je veux utiliser le même {% block%} deux fois dans le même modèle django. Je veux que ce bloc apparaisse plus d'une fois dans mon modèle de base:
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
Et puis prolongez-le:
# blog.html
{% extends 'base.html' %}
{% block title %}My Blog{% endblock %}
# pictures.html
{% extends 'base.html' %}
{% block title %}My Pictures{% endblock %}
# cats.html
{% extends 'base.html' %}
{% block title %}My Cats{% endblock %}
J'obtiendrai une exception, car Django souhaite que le bloc n'apparaisse qu'une seule fois:
TemplateSyntaxError à /
La balise 'block' avec le nom 'title' apparaît plus d'une fois
Une solution rapide et sale consisterait à dupliquer le titre du bloc dans title1 et title2 :
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
Mais c'est une violation du principe DRY . Ce serait très difficile car j'ai beaucoup de modèles héritiers, et aussi parce que je ne veux pas aller en enfer ;-)
Y a-t-il une astuce ou une solution à ce problème? Comment puis-je répéter le même bloc dans mon modèle, sans dupliquer tout le code?