Django包含模板标签多个模板选择

时间:2016-08-29 15:49:48

标签: django django-templates templatetags

我有一个要求,我必须在模板标签中包含一个模板。但我想要包含的模板并不固定。我有模板列表,以及首先需要包含的模板。

但是,包含模板标记只需要一个模板名称。 有没有办法修改此行为或任何其他方式来实现此目的。

我正在使用相同的自定义模板标签,但自从更新到django 1.9后我收到警告

RemovedInDjango110Warning: render() must be called with a dict, not a RequestContext.
return t.render(context)

这是我的自定义模板标记

@register.simple_tag(takes_context=True)
def custom_include(context, *template_choices):
    template_choices = (context['optionalTemplate'],) + template_choices
    t = template.loader.select_template(template_choices)
    return t.render(context)

我尝试从上下文中获取字典,它似乎有效(至少我认为)。但是一些上下文数据丢失了。例如,我的谷歌分析点击次数为零和那种东西。

request = context['request']
mydict = context.dicts[0]
return t.render(mydict, request)

任何人都可以建议如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

您需要将上下文压缩为单个字典。这将合并来自所有内部dicts的数据:

mydict = context.flatten()
return t.render(mydict, context.request)

同时检查the docs