Django模板不存在包含或扩展标签

问题描述

我正在创建Django项目。我相信我的问题很简单,但是我很难解决这个问题。我有一个index.html,我想在其中渲染某些东西。我决定我不想为我的每一个html页面都拥有html标头,这对我来说是疯狂的。我创建了一个base.html文件来包含html标头,并且想将其重新用于其他html文件,但是我该怎么做呢?

所以我最不确定的是要使用哪个标签{% include "base.html" %}{% extends "base.html"%}。直觉告诉我我应该使用{% include "base.html" %},因为我不相信自己应该继承。然后,与此相关的第二个问题是我该如何includeextends。我刚刚创建了一个base.html文件一个index.html文件,并且在我的index view文件中有一个views,该文件index.htmlcontext一起呈现。 / p>

如果我只使用index.html文件,一切都很好,但是当我在{% include "base.html" %}文件中执行index.html时,它不起作用,并且错误提示temlate base.html可以不存在。如果我使用extends而不是include

,也是一样

解决方法

我不想为我的每个html页面都拥有html标头

定义一个块,您可以根据需要在其他html页面中定义它,如下所示:

base.html中:

    {% block header %}{% endblock %}

index.html中:

    {% block header %}
    {% include "header.html" %}
   {% endblock %}

page_without_header.html中:

    // avoid defining the header block