您好我已将Django Admin模板扩展到我的app / templates / admin目录中。
在该目录中,我有base.html
包含
<header> header content<header>
<body> body Content </body>
<footer> Footer Content</footer>
所以我创建了包含
的header.html
{% extends "admin/base_site.html" %}
<!-- I also tried to include base.html here-->
{% block header %}
Header Html here...
{% endblock %}
并将base.html
替换为以下内容
{% block header %} {% endblock %}
<body> body content </body>
<footer> Footer Content </footer>
但是标题内容未加载..所以请建议。
答案 0 :(得分:7)
在使用header.html的阻止标头之前使用 include 。
并且您不需要创建一个块来将HTML文件包含到另一个中。 在header.html文件中,只需编写头文件的代码即可。 像这样:
{% extends "admin/base_site.html" %}
Header Html here...
并且,在您的base.html中尝试以下代码:
{% include "templates/header.html" %}
<body> body content </body>
<footer> Footer Content </footer>
注意:根据您的header.html位置使用包含&#34; templates / header.html&#34;
答案 1 :(得分:3)
你的方法中缺少一些东西。我们来看看管理员应用如何加载模板:
/admin/
。这就是全部。当您替换base.html模板并添加新块时,django会在index.html中查找此块定义。您的新标头文件无处可参与此过程。
无论您对模板做什么,django都会尝试渲染相应的视图模板,例如index.html(除非您自己更改视图)。因此,您可以选择覆盖从上一个向下延伸到第一个扩展的任何模板。
正如Prakhar的回答所建议的那样,为了让django确认你的新标题模板文件,你需要使用include
指令。
如果这不起作用,请确保使用基本文件和包含文件的正确路径。
请同时考虑到包含的内容远远超出扩展或简单覆盖的性能。