在Django 1.10中的render_to_string中使用RenderContext

时间:2016-12-06 15:39:22

标签: django django-1.10

我正在将项目升级到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)

这已不再适用,因为传入的contextRenderContext,其中docs州:

  

如果您在context_instance中传递了Context,请在context参数中传递一个dict。如果您正在传递RequestContext,请在请求参数中单独传递请求。

我已经在做什么,仍然希望将context参数用于render_to_string ......

那么如何从RenderContext获取可用的字典?

1 个答案:

答案 0 :(得分:2)

RenderContext的基类BaseContext有一个名为flatten的函数,它将在Context对象中获取字典数组并返回单个字典

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

需要更改为

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