1

我正在将项目升级到 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传入的是 a RenderContext,其中文档状态:

如果您在 context_instance 中传递 Context,请改为在 context 参数中传递 dict。如果您要传递 RequestContext,请在请求参数中单独传递请求。

我已经在做并且仍然想利用context参数来render_to_string......

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

4

1 回答 1

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)
于 2016-12-06T15:39:21.713 回答