Я хочу использовать один и тот же {% block%} дважды в одном шаблоне django. Я хочу, чтобы этот блок появлялся в моем базовом шаблоне более одного раза:
# 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 %}
Я получу исключение, так как Django хочет, чтобы блок появлялся только один раз:
TemplateSyntaxError в /
Тег 'block' с именем 'title' встречается более одного раза
Быстрое и грязное решение - дублировать заголовок блока в title1 и title2 :
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
Но это нарушение принципа DRY . Это было бы очень сложно, так как у меня много наследующих шаблонов, а также потому, что я не хочу идти к черту ;-)
Есть ли какой-нибудь трюк или способ решения этой проблемы? Как я могу повторить один и тот же блок в моем шаблоне, не дублируя весь код?