如果我的视图中大约一半需要相同的数据集,是否适合使用上下文处理器来使数据始终可用,或者有更好的方法来避免重复代码以跨多个视图获取数据而不查询数据如果不会在视图中使用?何时适合使用Django上下文处理器?
回答
的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'})
我认为这会为这个特殊的情况下工作,但想在这里想更大:如果我有需要有通过意见随机有3个或4背景处理器功能,在这一点上,我应该只需要导入他们,在需要他们的观点中打电话给他们?由于上下文处理器是一种无所谓的事情吗? – rennat 2009-05-06 20:17:33
对,settings.py中的上下文处理器对于RequestContext是全部或没有。一个更灵活的方法是为每个需要的处理器集合设置RequestContext的子类,并在那里设置上下文处理器,这样你就可以拥有SidebarContext和CommentsContext等等。这也可以使settings.py中的上下文处理器不受影响,使它们更专用,如果你有许多使用上下文处理器的应用程序,这会更好。那么,你只需要一个很好的方式来链接它们... – tghw 2009-05-07 05:02:24
- 1. Django上下文处理器
- 2. Django上下文处理器故障
- 3. Django上下文处理器获取AnonymousUser
- 4. Django站点的上下文处理器
- 5. Django,模板上下文处理器
- 6. Django与Jinja2 - 使用自定义上下文处理器
- 7. 如何从Django应用程序添加上下文处理器
- 8. Django的时候查询集传递到上下文处理器
- 9. Django上下文处理器没有Django的其余部分?
- 10. Django的上下文处理器以检查用户权限
- 11. 什么时候使用上下文处理器
- 12. 使用Django处理上传的文件
- 13. 如何处理上下文?
- 14. Django上下文处理器和表单变量
- 15. Django:模板上下文处理器请求变量
- 16. Django 1.5中的模板上下文处理器在哪里?
- 17. Django中的线程安全模板上下文处理器?
- 18. 上下文处理器vs django中的中间件
- 19. django-cms中的插件上下文处理器
- 20. 在Grails中是否有Django的上下文处理器?
- 21. Django模板变量,RequestContext和上下文处理器
- 22. Django的上下文处理器和中间件
- 23. Django上下文处理器和URL参数
- 24. 在上下文处理器中的关系“向后”处理器
- 25. golang http处理器上下文
- 26. 上下文处理器只在服务器重启时更新
- 27. 当我使用TinyMCE编辑器时,Django如何处理转义?
- 28. 使用Unity时EF上下文不会处理
- 29. 何时适合使用AJAX?
- 30. 何时适合使用CacheItemRemovedCallback?
这似乎是对我更好的答案 – Rasiel 2009-05-07 03:47:09
是的,我换了它,因为额外的处理器位是我真正以后。 – rennat 2009-05-07 14:24:19