在 Django 1.10 的 render_to_string 中使用 RenderContext
Using RenderContext in render_to_string in 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)
这不再有效,因为传入的 context
是 RenderContext
, where the docs 状态:
If you’re passing a Context in context_instance, pass a dict in the context parameter instead. If you’re passing a RequestContext, pass the request separately in the request parameter.
我已经在做,但仍想将 context
参数用于 render_to_string
...
那么如何从 RenderContext
中获取可用的字典?
RenderContext
的基础 class、BaseContext
有一个名为 flatten
的函数,它将获取上下文对象中的字典数组和 return 单个字典
render_to_string(svg_template_file_name, context, request=context.request)
需要改为
render_to_string(svg_template_file_name, context.flatten(), request=context.request)
我正在将项目升级到 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
, where the docs 状态:
If you’re passing a Context in context_instance, pass a dict in the context parameter instead. If you’re passing a RequestContext, pass the request separately in the request parameter.
我已经在做,但仍想将 context
参数用于 render_to_string
...
那么如何从 RenderContext
中获取可用的字典?
RenderContext
的基础 class、BaseContext
有一个名为 flatten
的函数,它将获取上下文对象中的字典数组和 return 单个字典
render_to_string(svg_template_file_name, context, request=context.request)
需要改为
render_to_string(svg_template_file_name, context.flatten(), request=context.request)