我正在将项目升级到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
,其中docs州:
如果您在context_instance中传递了Context,请在context参数中传递一个dict。如果您正在传递RequestContext,请在请求参数中单独传递请求。
我已经在做什么,仍然希望将context
参数用于render_to_string
......
那么如何从RenderContext
获取可用的字典?
答案 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)