何时适合使用Django上下文处理器?

时间:2009-05-06 19:28:25

标签: django django-templates

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

2 个答案:

答案 0 :(得分: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'})

答案 1 :(得分: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'})