同じdjangoテンプレートで同じ{%block%}を 2回使用したいと思います。このブロックをベーステンプレートに複数回表示します。
# 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がブロックを1回だけ表示することを望んでいるため、例外が発生します。
/のTemplateSyntaxError
「タイトル」という名前の「ブロック」タグが複数回表示されています
素早くて汚い解決策は、ブロックのタイトルをtitle1とtitle2に複製することです:
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
しかし、これはDRY原則の違反です。継承するテンプレートがたくさんあり、また地獄に行きたくないので、それは非常に難しいでしょう;-)
この問題に対するトリックや回避策はありますか?すべてのコードを複製せずに、テンプレートで同じブロックを繰り返すにはどうすればよいですか?