Для 2 файлов дочерних шаблонов, наследующих блок, {{ block.super }}
не разрешается
Python 2.5.2, Джанго 1.0, Windows XP SP3
Пример скелетного кода для задействованных файлов:
base.html
item_base.html
show_info_for_all_items.html
show_info_for_single_item.html
ФАЙЛ : base.html
{% block content %}
{% endblock %}
ФАЙЛ : item_base.html
{% extends "base.html" %}
{% block item_info %}
Item : {{ item.name }}<br/>
Price : {{ item.price }}<br/>
{% endblock %}
ФАЙЛ : show_info_for_all_items.html
{% extends "item_base.html" %}
{% block content %}
<h1>info on all items</h1>
<hr/>
{% for item in items %}
{% block item_info %}
{{ block.super }}
{% endblock %}
<hr/>
{% endfor %}
{% endblock %}
ФАЙЛ : show_info_for_single_item.html
{% extends "item_base.html" %}
{% block content %}
<h1>info on single item</h1>
{% block item_info %}
{{ block.super }}
{% endblock %}
{% endblock %}
show_info_for_all_items.html
показывает список элементов вместе с информацией о каждом элементе.
show_info_for_single_item.html
показывает один элемент с информацией о нем.
show_info_for_all_items.html
и show_info_for_single_item.html
используют один и тот же код для отображения информации об элементе, поэтому я переместил его из item_base.html
в block item_info
.
но {{ block.super }}
в show_info_for_all_items.html
и show_info_for_single_item.html
не работает. {{ block.super }}
разрешается как пустое.
Если я верну код из block item_info
в item_base.html
в show_info_for_all_items.html
и show_info_for_single_item.html
, он сработает, но тогда мне придется дублировать тот же код block item_info
в 2 файлах.
Если проблема block.super не может быть решена, предлагает ли Django что-то вроде INCLUDE => {% INCLUDE "item_base.html" %}
, чтобы можно было включить блоки из файла шаблона (вместо extends
)
Как избежать дублирования block item_info
в обоих html-файлах?
include
было ключевым словом, которое дало бы мне результат. На самом деле его нет в документации по расширению шаблона здесь - person Jamie Marshall   schedule 21.01.2021