Python JSON中间件不工作
所以我要做的是捕获抛出的任何HttpErrors,并将它们转换为JSON响应。我创建了这个中间件:Python JSON中间件不工作,python,django,Python,Django,所以我要做的是捕获抛出的任何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
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响应
知道为什么吗
编辑:在自定义装饰程序中引发异常?这可能是个问题吗?我记不起细节,但中间件顺序很重要。您确定中间件激活后不会引发异常吗?@aquavitae我尝试更改中间件的顺序,但没有帮助。它仍然忽略了我的中间件类。我还删除了所有我不需要的中间件。@aquavitae例外情况在我的自定义装饰器中提出。装饰器在哪里,它装饰什么?也许一点代码上下文会有所帮助?大概是在异常到达中间件之前处理了它。你试过通过调试器运行它吗?我假设
print 1111
行从未运行过。。。