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渡されたのは aRenderContextであるため、これは機能しなくなりました。ドキュメントの状態は次のとおりです。

context_instance で Context を渡す場合は、代わりに context パラメータで dict を渡します。RequestContext を渡す場合は、リクエスト パラメーターでリクエストを個別に渡します。

context私はすでにやっていますが、まだパラメータを利用したいと思っていますrender_to_string...

では、から使用可能な辞書を取得するにはどうすればよいRenderContextですか?

4

1 に答える 1

2

RenderContextの基本クラス には、Context オブジェクト内の辞書の配列を取得し、単一の辞書を返す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)
于 2016-12-06T15:39:21.713 に答える