使用django rest框架时如何在django中间件中处理响应?

时间:2018-09-30 09:16:43

标签: django django-rest-framework

我正在使用django rest框架。

由于某些原因,我希望响应数据采用以下格式

{
    code: http_code, data: original_data
}

因此,我编写了一个django中间件来处理响应。逻辑如下:

class WrapResponse(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):

        response = self.get_response(request)

        original_content = json.loads(response.content)
        wrapped_response = json.dumps({'data': original_content, 'code': ''})
        response.content = wrapped_response

        return response

通常这没问题。但是有一个问题。 rest框架返回的响应是一个呈现的视图。

因此,在某些情况下,例如从浏览器查看api,response.content将是呈现的html。这会导致错误。

我知道我可以在返回视图之前更改响应。但是我真的很想使用中间件来做到这一点。有什么好办法吗?

0 个答案:

没有答案