所以我要做的就是捕获任何抛出的HttpErrors并将它们转换为JSON响应。我创建了这个中间件:
from simple_rest.exceptions import HttpError
import json
from django.http import HttpResponse
class JSONErrorMiddleware():
def process_exception(self, request, exception):
print 1111
if not isinstance(exception, HttpError):
return HttpResponse(
json.dumps({
'status' : 'error',
'message' : exception.message,
}),
status=500,
content_type='application/json; charset=utf-8',
)
return HttpResponse(
json.dumps({
'status' : 'error',
'message' : exception.message,
}),
status=exception.status,
content_type='application/json; charset=utf-8',
)
并将其添加到我的设置中:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'proj.middleware.JSONErrorMiddleware',
)
当我向抛出HttpError的端点发出请求时,不使用中间件。我只是得到一个text / html响应,而不是一个很好的JSON响应。
知道为什么吗?
编辑:自定义装饰器中引发异常?这可能是个问题吗?