Tôi muốn sử dụng cùng {% block%} hai lần trong cùng một mẫu django. Tôi muốn khối này xuất hiện nhiều lần trong mẫu cơ sở của mình:
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
Và sau đó mở rộng nó:
# 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 %}
Tôi sẽ có một ngoại lệ, vì Django muốn khối chỉ xuất hiện một lần:
TemplateSyntaxError tại /
thẻ 'chặn' với tên 'title' xuất hiện nhiều lần
Một giải pháp nhanh chóng và bẩn thỉu sẽ sao chép tiêu đề khối thành title1 và title2 :
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
Nhưng đây là một sự vi phạm nguyên tắc DRY . Sẽ rất khó vì tôi có rất nhiều mẫu kế thừa, và cũng vì tôi không muốn xuống địa ngục ;-)
Có bất kỳ mẹo hoặc giải quyết vấn đề này? Làm cách nào tôi có thể lặp lại cùng một khối trong mẫu của mình mà không cần sao chép tất cả mã?