Chcę użyć tego samego {% block%} dwa razy w tym samym szablonie django. Chcę, aby ten blok pojawiał się więcej niż raz w moim szablonie podstawowym:
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
A potem przedłużyć:
# 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 %}
Dostanę wyjątek, ponieważ Django chce, aby blok pojawił się tylko raz:
TemplateSyntaxError w /
Znacznik „blok” z nazwą „tytuł” pojawia się więcej niż raz
Szybki i brudny rozwiązaniem byłoby powielenie bloku tytuł do Title1 i Title2 :
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
Ale jest to naruszenie zasady DRY . Byłoby to bardzo trudne, ponieważ mam wiele dziedziczących szablonów, a także dlatego, że nie chcę iść do diabła ;-)
Czy jest jakaś sztuczka lub obejście tego problemu? Jak mogę powtórzyć ten sam blok w moim szablonie bez powielania całego kodu?