目前,由于我想访问所有模板中的user信息,因此我始终在所有视图中使用context_instance = RequestContext( request )。我也喜欢RequestContext,因为它可以自动处理csrf

现在,我通常只是将我所有的字典值都放在RequestContext中进行渲染

request_context = RequestContext( request, {
    'order'          : order,
    'order_comments' : order_comments,
    'comment_form'   : comment_form,
} )

return render_to_response( 'doors/orders/detail.html', context_instance = request_context )

与此有何不同?
context = {
    'order'          : order,
    'order_comments' : order_comments,
    'comment_form'   : comment_form,
}

return render_to_response( 'doors/orders/detail.html', context, context_instance = RequestContext( request ) )

如果在程序方面并没有真正的区别,那么最佳实践或首选方法是什么?

最佳答案

没有区别,主要是。

在第二个示例中,context参数更新了context_instance,但其本身为空白,因此最终这些示例之间没有区别。

这是来源...

if not context_instance:
    return t.render(Context(dictionary))
# Add the dictionary to the context stack, ensuring it gets removed again
# to keep the context_instance in the same state it started in.
context_instance.update(dictionary)

对我而言,首选方法是使用1.3+及更高版本中的render快捷方式,而不是render_to_response快捷方式,因为在我的大多数模板渲染中,我都使用RequestContext
from django.shortcuts import render_to_response, render

render(request, 'mytemplate.html', {'foo': 'bar'}) # automatically uses RequestContext
# vs
render_to_response('mytemplate.html', {'foo': 'bar'}, context_instance=RequestContext(request))

关于django - 在Django中将字典作为RequestContext的一部分或render_to_response的一部分添加之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9828465/

10-13 05:27