在Django模板中,我有一个默认基础和特定的乐器 /基本模板。
我试着这样做:
{% extends instrument|yesno:instrument|add:"/base.html,base.html" %}
如果仪器存在,我将扩展“ instrument /base.html”,否则只是“base.html”。
这失败了:
TemplateDoesNotExist: instrum2/base.html,base.html
知道如何解决这个问题吗?
注意:我只从视图中传递了作为参数的乐器。我也无法将基本模板作为参数传递。
提前感谢您的帮助。
答案 0 :(得分:0)
我认为坐在模板本身中的逻辑太复杂了,尽管Django模板可能有用,但我会问:
如何在视图中执行逻辑?
def get_context_data(self, **kwargs):
instrument = #get it from somewhere here
kwargs['base'] = "%s/base.html" % instrument if instrument else "base.html"
return super(MyView, self).get_context_data(**kwargs)
然后你可以在模板中{% extends base %}
。
答案 1 :(得分:0)
也许使用include
代码......
base.html
view.html
instrument1/base.html
instrument2/base.html
我们假设view.html
是视图呈现的模板,base.html
是要继承的基本工具模板......其他人则根据工具自定义。
<强> view.html 强>
{% if instrument %}
{% include instrument|add:'/base.html' %}
{% else %}
{% include 'base.html' %}
{% endif %}
<强> instrument1 / base.html文件强>
{% extends 'base.html' %}
<强> instrument2 / base.html文件强>
{% extends 'base.html' %}