【问题标题】:Add metadata to WSGIRequest object将元数据添加到 WSGIRequest 对象
【发布时间】:2020-04-05 20:24:36
【问题描述】:

我有 Django1.9 中间件类:

class MyMiddleware(object):

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

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

您能建议我一些解决方案吗?

【问题讨论】:

  • 只需在请求中添加属性,所以request.token = token

标签: python django session middleware requestcontext


【解决方案1】:

您可以将任何属性添加到HttpRequest,因此您可以使用:

class MyMiddleware(object):

    def process_request(self, request):
        token = self._get_or_create_token(request)
        request.token = token

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

class MyMiddleware(object):

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

我有 Django1.9 中间件类。

documented 一样,自2017 年4 月 起不再支持,因此我强烈建议更新。

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 2020-08-12
    • 2021-09-16
    • 2022-08-19
    • 1970-01-01
    • 2015-02-01
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多