我正在使用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。这会导致错误。
我知道我可以在返回视图之前更改响应。但是我真的很想使用中间件来做到这一点。有什么好办法吗?