我有以下设置。
base.html文件
<html>
//etc
<body>
{% include "partials/footer.html" %}
</body>
</html>
分音/ footer.html
<div class="footer">
<h2>{% block footer_headline %}Default footer headline{% endblock %}</h2>
</div>
page1.html
{% extends 'base.html' %}
{% block footer_headline %}NEW Footer Headline {% endblock %}
但是,页脚标题不会改变。我做错了什么?
答案 0 :(得分:6)
这是一个记录在案的限制。请参阅文档:https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#include
include标记应该被视为“渲染此子模板并包含HTML”的实现,而不是“解析此子模板并将其内容包含在内,就好像它是父节点的一部分”。这意味着包含的模板之间没有共享状态 - 每个包含都是完全独立的渲染过程。 在包含块之前对块进行评估。这意味着包含来自另一个块的块的模板将包含已经过评估和渲染的块 - 而不是可以被扩展模板覆盖的块。
最简单的解决方案是不包含包含要覆盖的块的模板。只需将页脚标记放在base.html
中