将元数据添加到 WSGIRequest 对象

Add metadata to WSGIRequest object

我有Django1.9中间件class:

class MyMiddleware(object):

    def process_request(self, request):
        token = self._get_or_create_token(request)
        #request.context['token'] = token 

问题是: - 我想将令牌放入某种上下文以通过应用程序流传递它。 - 我避免将它放入请求会话中,因为它会导致额外的数据库 reading/writing.

你能给我一些解决方案吗?

您可以向 HttpRequest 添加任何属性,因此您可以通过以下方式实现:

class MyMiddleware(object):

    def process_request(self, request):
        token = self._get_or_create_token(request)
        <b>request.token</b> = token

或者如果你真的想要某种 context 字典:

class MyMiddleware(object):

    def process_request(self, request):
        token = self._get_or_create_token(request)
        if not hasattr(request, 'context'):
            request.context = {}
        <b>request.context['token']</b> = token

I have Django1.9 middleware class.

documented, 2017 年 4 月 以来不再受支持,因此我强烈建议更新。