在Django模板中,使用了extends
标记{% extends "base.html" %}
。
如果可能,我希望在多个应用中为模板命名相同(例如templates/bookkeeping/bookkeeping.html
)。
我希望更专业的应用程序(处理特定项目的簿记)使用extends
在不太专业的应用程序(用于处理我们多个项目的簿记的常见任务)中扩展模板。特别是在不太专业的应用中,我创建了一个没有太多设计的模板在更专业的应用程序中,我想呈现相同的信息,但具有特定的设计(CSS等)
在Django 1.11中可以做些什么?
如果无法使用具有相同模板名称(但应用程序不同)的模板扩展,那么解决问题的其他可能方法是什么?如果没有derived.html
,我可以检查base.html
的存在并回退到derived.html
,但这会导致编写繁琐的Python代码。还有更好的方法吗?
答案 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模板。