对于继承一个块的 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 }}
inshow_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 文件中重复?