render_to_string的context_instance参数已被弃用。

7
我正在使用Django 1.9。
使用render_to_string,我可以将渲染后的html作为json轻松传递给客户端脚本。然而,由于模板依赖于变量,如user,因此我还需要传递context_instance=RequestContext(request),否则模板将不知道request.user是什么,所以if语句会出问题等。
然而,我收到了这个废弃警告:

RemovedInDjango110Warning: The context_instance argument of render_to_string is deprecated. response_data['content'] = render_to_string("profile/userprofile_detail/content.html", context, context_instance=RequestContext(request))

render_to_string中传递RequestContext的非过时方法是什么?
2个回答

6

render_to_string 函数有一个上下文参数,你可以将其直接传递为一个字典,就像处理任何其他响应一样。

render_to_string(template_name, context=None, 
                 context_instance=_context_instance_undefined, request=None, using=None)

链接的文档还包括一条鼓励这样做的注释。

自版本1.8起已弃用:

context_instance参数已被弃用。请使用context和必要时请求。


4
建议您在调用 render_to_string 方法时传递 request。这样,Django 将使用请求上下文呈现模板。
render_to_string("profile/userprofile_detail/content.html", context, request=request)

非常感谢!终于有适用于Django 1.10+的东西可用了。这应该是正确的答案,我相信。 - Teekin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接