这是关于中间件和视图通信的 SO线程的一个非常类似的问题
我们希望为模板提供一组标准的上下文变量.因此,上下文处理器似乎是合适的,但是,上下文处理器似乎不是视图感知的.我们之前被迫检查调用堆栈以获取有关视图正在执行什么操作的上下文信息.
这就是我们看到中间件线程以及中间件的process_view()签名,它为我们提供了视图的句柄.
这似乎更接近我们的需求,但不允许我们修改上下文变量,其他中间件方法也没有.
因此,我们最初的想法是使用我们模板所需的所有全局和上下文信息来修改请求对象,并强制模板从{{request.something}}我们需要的特定信息中调用,例如{{request.viewname}}.
所以,我们的问题:
middleware.process_response有机会修改上下文或是不可变的?在中间件中根据请求设置变量是完全有效的 - 我一直这样做。
没有办法使用process_response它,因为那时模板已经被渲染了——此时你得到的只是HttpResponse包含一堆 HTML 的内容。
另一种方法可能是render_to_response使用您自己的函数进行包装,该函数获取上下文以及请求和模板,并根据需要对其进行修改,然后再交给实际的渲染函数。这样做的优点是可以修改实际上下文,但缺点是您必须记住在每个视图中调用它而不是默认函数。
| 归档时间: |
|
| 查看次数: |
2847 次 |
| 最近记录: |