【发布时间】:2019-05-23 09:36:04
【问题描述】:
我在 Django 中间件中正确处理异常时遇到问题。 我的例外:
from rest_framework.exceptions import APIException
from rest_framework.status import HTTP_403_FORBIDDEN
class MyProfileAuthorizationError(APIException):
def __init__(self, msg):
APIException.__init__(self, msg)
self.status_code = HTTP_403_FORBIDDEN
self.message = msg
还有我的中间件:
class PatchRequestUserWithProfile:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request, *args, **kwargs):
patch_request_for_nonanon_user(request)
if not request.user.profile:
raise MyProfileAuthorizationError("You are not allowed to use this profile.")
response = self.get_response(request)
return response
这个异常抛出 500 而不是 403。我该如何解决这个问题?
【问题讨论】:
-
可以添加错误回溯吗?
-
MyProfileAuthorizationError 这返回 500 ?
-
@gachdavit 是的,是的。看起来它没有作为 http 异常处理,而是像通常的错误引发一样。
标签: python django django-rest-framework middleware