在django 1.10中使用rendercontext在render_to_string中使用RenderContex



我正在将项目升级到django 1.10,并试图更改以下模板标签(简化)

@register.simple_tag(takes_context=True)
def render_svg(context, svg_template_file_name, *args, **kwargs):
    svg_string = render_to_string(svg_template_file_name, context, request=context.request)

这不再起作用,因为context通过的是RenderContext,其中文档状态:

如果您要传递上下文_instance中的上下文,请改用上下文参数中的dict。如果您通过requestContext,请在请求参数中分别传递请求。

我已经在做,仍然想利用context参数到render_to_string ...

那么如何从RenderContext获得可用的词典?

RenderContext的基类BaseContext具有一个称为 flatten的函数,该函数将在上下文对象中将词典数字列入词典并返回单个词典

render_to_string(svg_template_file_name, context, request=context.request)

需要更改为

render_to_string(svg_template_file_name, context.flatten(), request=context.request)

最新更新