我有以下情况:
base.html文件:
{% block content %}{% endblock %}
child.html:
{% extends 'base.html' %}
{% block content %}
<p>Overriding content</p>
{% endblock %}
{% block child_block %}{% endblock %}
child_of_child.html:
{% extends 'child.html' %}
{% block child_block %}
<p>Overriding child</p>
{% endblock %}
在child.html中创建一个新的块child_block并让child_of_child.html扩展child.html并覆盖此块不起作用,直到我在base.html中将child_block包含为钩子。
除了根模板之外,是否无法创建新的模板块/挂钩?如果是这样,有没有办法绕过它而不必在base.html中包含所有可能的钩子?
答案 0 :(得分:6)
问题是,child_block
阻止不会出现在base.html
中的任何位置,因为它不在现有阻止之内。渲染模板时会出现在哪里?根本没有为它定义的地方。
子模板完全可以在其他块中定义块,然后由其他块填充。所以,例如:
{% extends 'base.html' %}
{% block content %}
<p>Overriding content</p>
{% block child_block %}{% endblock %}
{% endblock %}
绝对正常,你的结果将是:
<p>Overriding content</p>
<p>Overriding child</p>