1

在模板中,我想通过模板标签的返回值来确定子模板的父模板。

这是模板标签。它返回应用标签(包名)并附加要扩展的相应模板名称:

{% app_label request.path %}

现在我想做的是:

{% extends app_label %}

这可能吗?

4

2 回答 2

1

我用上下文处理器解决了这个问题:

def app_label_processor(request):
    return {
        'app_base_template': resolve(request.path).app_name
    }

然后我可以使用这个:

{% extends app_base_template %}

你需要做的就是

  • 按照此答案中的说明添加您的应用网址
  • 将您的上下文处理器添加到 settings.TEMPLATE_CONTEXT_PROCESSORS
  • 用于RequestContext渲染模板。
于 2012-06-28T06:03:32.230 回答
1

那是不可能的。该{% extends %}标签必须是模板中的第一个模板标签(source):

如果{% extends %}在模板中使用,它必须是该模板中的第一个模板标签。否则,模板继承将不起作用。

这意味着您不能在其前面有另一个模板标签来构造具有模板名称的变量。

但是,您可以在视图中调用模板标记函数(可能经过一些重构)并将变量添加到模板上下文中。然后它是一个可以在标签中使用的普通变量{% extends ... %}

于 2012-06-27T17:51:57.147 回答