Django:请求模板上下文透明度的对象

时间:2010-03-23 09:06:16

标签: python django templates request django-context

我想在我的请求对象中包含一个初始化的数据结构,使其可以在我的模板的上下文对象中访问。我现在正在做的是在我的所有观点中手动传递它并且令人厌烦:

render_to_response(...., ( {'menu': RequestContext(request)}))

请求对象包含使用自定义上下文处理器注入的键值对。虽然这有效,但我希望有一种更通用的方法将请求对象的选定部分传递给模板上下文。我已经尝试通过通用视图传递它,但事实证明,在解析urlpatterns列表时没有实例化请求对象。

2 个答案:

答案 0 :(得分:1)

要完成此任务,您可能需要create your own middleware。这样,您就可以在视图功能之前和之后完全控制请求。

中间件是一个非常强大的概念,并不像它看起来那么难实现,但不要过度 - 它使得很难遵循程序流程。

答案 1 :(得分:0)

我不太了解你的问题。

您要么抱怨必须在所有视图中包含RequestContext,在这种情况下您需要编写一个为您传递RequestContext的包装器。但是你仍然需要传递它的请求。如果你不想传递它,你可能必须像mikl建议的那样创建自己的中间件。

或者,您抱怨必须在每个视图中传递大量菜单项。这是错误的方法,您需要define a template context processor,以确保默认情况下这些都存在于模板中。