【问题标题】:Django template does not exist include or extends tagsDjango 模板不存在包含或扩展标签
【发布时间】:2020-08-31 17:50:19
【问题描述】:

我正在创建一个 Django 项目。我相信我的问题很简单,但我很难弄清楚。我有一个index.html,我想在其中渲染某些东西。我决定我不想为我的每一个 html 页面都有一个 html 标题,这对我来说是疯狂的。我创建了一个 base.html 文件来包含一个 html 标头,我想将它重用于我的其他 html 文件,但是如果可能的话,我该如何做到这一点。

所以我最不确定的是使用哪个标签{% include "base.html" %}{% extends "base.html"%}。直觉告诉我应该使用{% include "base.html" %},因为我不相信我应该继承。然后我的第二个与此相关的问题是我如何甚至includeextends。我刚刚创建了一个base.html 文件和一个index.html 文件,并在我的views 文件中有一个index view,它用context 渲染index.html

如果我只使用index.html 文件,一切正常,但是当我在index.html 文件中使用{% include "base.html" %} 时,它不起作用并且错误提示模板base.html 不存在。如果我使用extends 而不是include,也是如此

【问题讨论】:

  • 要解决第二个问题,您需要发布 html 目录和文件位置

标签: django templates tags include extends


【解决方案1】:

我不希望我的每个 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

【讨论】:

  • 谢谢,所以实际上我是 Django 的新手,很多基本概念都让我无法理解。在我的设置文件中,我修复了templates 中的DIRS 以正确指向并在我的模板文件夹中重组了我的布局。我的设置与您的设置略有不同,但它有效。我试过你的,也可以。谢谢
猜你喜欢
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2011-04-16
  • 1970-01-01
  • 2015-07-25
  • 2016-08-12
相关资源
最近更新 更多