Для 2 дочерних файлов шаблонов, наследующих блок, {{ block.super }}
не разрешает
Python 2.5.2, Django 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-файлах?