【发布时间】:2010-10-24 07:07:23
【问题描述】:
如果我大约一半的视图需要相同的数据集,是否适合使用上下文处理器使数据始终可用,或者是否有更好的方法来避免重复代码以跨多个视图获取数据而无需查询视图中不使用的数据?
【问题讨论】:
如果我大约一半的视图需要相同的数据集,是否适合使用上下文处理器使数据始终可用,或者是否有更好的方法来避免重复代码以跨多个视图获取数据而无需查询视图中不使用的数据?
【问题讨论】:
RequestContext 初始化程序将运行设置文件中列出的任何上下文处理器,但它也需要运行其他处理器的列表。任何通用上下文处理器都可以放在 settings.py 中,更具体的上下文处理器可以根据具体情况添加到RequestContext。
完全离开 RequestContext 以不运行任何上下文处理器。
# want context processors listed in settings.py as well as some more specific ones
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request, processors = extra_processors))
# want only context processors listed in settings.py
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))
# no context processors
return render_to_response('template.html', {'foo':'bar'})
【讨论】:
您可以通过仅将RequestContext(request) 仅传递给需要它的视图来过滤掉哪些视图实际使用上下文处理器,例如:
# want context processors
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))
# no context processors
return render_to_response('template.html', {'foo':'bar'})
【讨论】: