同じ 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の原則に違反しています。継承するテンプレートがたくさんあり、地獄に行きたくないので、非常に難しいでしょう;-)
この問題に対するトリックまたは回避策はありますか? すべてのコードを複製せずに、テンプレートで同じブロックを繰り返すにはどうすればよいですか?