17

如果我大约一半的视图需要相同的数据集,是否适合使用上下文处理器使数据始终可用,或者是否有更好的方法来避免重复代码以跨多个视图获取数据而无需查询数据它不会在视图中使用?

4

2 回答 2

22

初始化程序将运行设置文件中列出的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'})
于 2009-05-07T03:16:58.730 回答
1

您可以通过仅传递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'})
于 2009-05-06T20:00:44.537 回答