django包含来自其他应用程序的模板

在设置我的项目和努力保持应用程序不依赖,我打了一个障碍。我想从不同的应用程序的所有模板具有一致的页眉和页脚。这里是我试图:

myproject/
         base/
             templates/
                      header.html
                      footer.html
         app1/
             templates/
                      my_app1_page.html -> want to include 'header.html'
                                           and 'footer.html' from base app

假装有更多的应用程序,也想做到这一点。这是可能和/或正确的方法吗?

只要应用程式位于INSTALLED_APPS,且应用程式dirs的范本载入器已启用,您就可以加入其他应用程式的任何范本,例如:

{% include "header.html" %}

…因为您的模板直接位于应用程序的模板目录中。
一般来说,为了避免名称冲突,最好使用:

app1/
    templates/
        app1/
            page1.html
            page2.html
app2/
    templates/
        app2/
            page1.html
            page2.html

和{%include“app1 / page1.html”%}或{%include“app2 / page1.html”%} …

但是:为了保持一致的外观和感觉,使用模板继承而不是包含更好。模板继承是Django模板系统真正好的东西之一,当它有意义时(大多数时候),选择继承。

我的建议:

>为您的项目创建一个基本模板(“base.html”是默认约定),其中包含标题和页脚以及您的主要内容的{%block content%}。
>让其他模板继承base.html {%extends“base.html”%}并覆盖内容部分

请参阅对此问题的另一个响应,以获取指向文档的链接

http://stackoverflow.com/questions/4571686/django-include-template-from-another-app

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:django包含来自其他应用程序的模板