首页 > 解决方案 > 如何在 django 中间件中添加字段以请求正文

问题描述

我想在中间件的请求正文中添加新字段并在视图中使用它。

我用谷歌搜索了它,但结果没有用。

我该怎么做?

Django v2 python 3.6

标签: djangopython-3.xdjango-middleware

解决方案


您需要添加一个单独的自定义中间件,该中间件将在登陆到特定视图之前处理请求。下面是自定义中间件的代码:

class ProcessRequestMiddleware(MiddlewareMixin):
    """
    This middleware appends new payload in request body
    """

    def process_view(self, request, view_func, *view_args, **view_kwargs):
        request_data = getattr(request, '_body', request.body)
        request_data = json.loads(request_data)
        # here you can write the logic to append the payload to request data
        request._body = json.dumps(request_data)
        return None

注意 - 中间件被放置在一个应用程序 common (common/middleware/custommiddleware.py) 中

现在将此中间件添加到 settings.MIDDLEWARE 列表中:

"common.middleware.custommiddleware.ProcessRequestMiddleware"

现在您可以通过调用json.loads(request.body).


推荐阅读