2016-08-24 97 views
0

我有一个自定义中间件,并且在process_view过程中,我得到了一些令牌。我需要将此标记传递给呈现的结果html。将数据从django middleware.process_view传递到模板上下文

我认为context_processor是修改上下文的好地方,但看起来很难将一些数据从中间件传递到处理器。

但是,似乎通信process_view和上下文处理器的唯一方法是请求对象。如果设置任何字段的请求我得到'WSGIRequest'对象不支持项目分配'错误。这里是一段代码:

def process_view(self, request, view_func, view_args, view_kwargs): 
    ... 
    with log(request, view_func.__name__, info) as id: 

     request['TOKEN_ID'] = logger.get().get_id() #here is an error 
     response = view_func(request, *view_args, **view_kwargs) 

所以,看起来我做错了什么。有没有办法沟通middleware.process_view和context_processor?或者我应该改变另一种方式将数据从中间件传递给html?

回答

1

当您尝试使用字典项任务即引发错误:

request['my_key'] = 'my_value' 

,但该请求没有字典,它是一个对象。与所有对象一样 - 您必须熟悉Django模型 - 您需要设置属性,而不是项目。

request.my_attribute = 'my_value' 

(下一次,请出示您使用的代码和你有完整的回溯。)

+0

是的,我想过添加代码,但实际上它看上去那么简单,“默认”,我相信这是不需要的。无论如何,我加了它,因为这是我的代码问题。谢谢! – Paul