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