django将常用的词典传递给模板而不在每个视图中明确传递它们?

时间:2012-02-27 18:21:35

标签: django django-templates django-views

当你render_to_template你传递不同项目的字典时,模板需要渲染东西。其中一些通常用于所有页面,例如,用户问候语或类似的用户问候语。有没有办法通过某种方式将这种字典项目传递到所有模板中而不必在每个视图中明确定义它们,从而使实时变得更容易?

2 个答案:

答案 0 :(得分:4)

这就是上下文处理器的用途 - 您可以定义一个字典,将其添加到每个响应的上下文中。

它们编写起来非常简单,您只需将它们添加到您的设置中即可。只需记住确保使用RequestContext而不是模板的简单上下文,它们每次都会自动运行。

文档在这里:https://docs.djangoproject.com/en/1.3/ref/templates/api/#writing-your-own-context-processors

答案 1 :(得分:1)

您可以使用上下文处理器,如this example中所示。每个render_to_response最终都会显示为:

return render_to_response("my_app/my_template.html", {'some_var': 'foo'},
                       context_instance=RequestContext(request))