在设置我的项目并努力使应用程序不依赖时,我遇到了麻烦.我希望来自不同应用程序的所有模板都具有一致的页眉和页脚.这是我正在尝试的:
myproject/
base/
templates/
header.html
footer.html
app1/
templates/
my_app1_page.html -> want to include 'header.html'
and 'footer.html' from base app
Run Code Online (Sandbox Code Playgroud)
假装有更多的应用程序也想要这样做.这是可能的和/或正确的方法吗?
Car*_*bés 92
只要应用程序处于INSTALLED_APPS并且启用了应用程序目录的模板加载程序,您就可以包含来自其他应用程序的任何模板,即:
{% include "header.html" %}
Run Code Online (Sandbox Code Playgroud)
...因为您的模板直接位于应用的模板目录中.通常,为了避免名称冲突,最好使用:
app1/
templates/
app1/
page1.html
page2.html
app2/
templates/
app2/
page1.html
page2.html
Run Code Online (Sandbox Code Playgroud)
和{% include "app1/page1.html" %}或 {% include "app2/page1.html" %}...
但是:为了保持一致的外观和感觉,使用模板继承而不是包含更好.模板继承是Django模板系统真正优秀的东西之一,只要有意义(大多数时候)选择继承而不是包含.
我的建议:
{%block content%}主要内容.{% extends "base.html" %}并覆盖内容部分有关该文档的链接,请参阅此问题的其他回复