Я хочу використовувати той самий {% block%} двічі в одному шаблоні джанго. Я хочу, щоб цей блок відображався не один раз у моєму базовому шаблоні:
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
А потім продовжте:
# 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 %}
Я отримаю виняток, оскільки Джанго хоче, щоб блок з’явився лише один раз:
TemplateSyntaxError у /
тег "block" з ім'ям "title" з'являється не один раз
Швидке та брудне рішення - це дублювання заголовка блоку на title1 та title2 :
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
Але це порушення принципу DRY . Це було б дуже важко, оскільки у мене багато спадкових шаблонів, а також тому, що я не хочу йти в пекло ;-)
Чи є якась хитрість чи вирішення цієї проблеми? Як я можу повторити той самий блок у своєму шаблоні, не дублюючи весь код?