Django模板在应用程序之间继承

时间:2017-08-02 18:25:42

标签: django django-templates django-apps

在Django模板中,使用了extends标记{% extends "base.html" %}

如果可能,我希望在多个应用中为模板命名相同(例如templates/bookkeeping/bookkeeping.html)。

我希望更专业的应用程序(处理特定项目的簿记)使用extends在不太专业的应用程序(用于处理我们多个项目的簿记的常见任务)中扩展模板。特别是在不太专业的应用中,我创建了一个没有太多设计的模板在更专业的应用程序中,我想呈现相同的信息,但具有特定的设计(CSS等)

在Django 1.11中可以做些什么?

如果无法使用具有相同模板名称(但应用程序不同)的模板扩展,那么解决问题的其他可能方法是什么?如果没有derived.html,我可以检查base.html的存在并回退到derived.html,但这会导致编写繁琐的Python代码。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您是否可以按以下方式为每个应用中的模板命名目录:

app1/templates/app1/bookkeeping/bookkeeping.html
app2/templates/app2/bookkeeping/bookkeeping.html

然后在更专业的应用程序(app2)中使用:

进行扩展
{% extends "app1/bookkeeping/bookkeeping.html" %}

或者我在这里遗漏了什么?

编辑:

您可以将Python代码链接到指向一个模板,例如templates/pages/bookeeping_base.html。在那个模板中你可以说:

{% if project.is_specialised %}
    {% include 'app2/bookkeeping/bookkeeping.html' %}
{% else %}
    {% include 'app1/bookkeeping/bookkeeping.html' %}
{% endif %}

然后如上所述,app2模板仍然可以扩展app1模板。