我现在使用Django编码后端系统,并且我希望控制Django中的所有异常,因此我创建了一个中间件(名称为CustomExceptoinMiddleware
来控制异常。
但是有时其他中间件也会引发异常,我希望CustomExceptoinMiddleware也可以捕获它,但是我不知道该怎么做。
有人可以帮我吗?
预先感谢!
Python版本:3.7
Django版本:2.2.3
Setting.py
MIDDLEWARE = [
...
"api.core.middleware.CustomExceptoinMiddleware ",
"api.core.middleware.RaiseExcceptionMiddleware",
...
]
# middleware.py
class CustomExceptoinMiddleware(MiddlewareMixin):
def process_exception(self, request, exception):
print(f"Capture exception: {type(exception)}")
class RaiseExcceptionMiddleware(MiddlewareMixin):
def process_request(self, request):
raise KeyError()
答案 0 :(得分:0)
您不能那样做。正如您在文档(https://docs.djangoproject.com/en/2.2/topics/http/middleware/#process-exception中所读到的那样),您只能从视图中捕获异常。更详细:
同样,中间件在响应阶段以相反的顺序运行, 其中包括process_exception。如果异常中间件返回一个 响应,中间件类的process_exception方法 上面的中间件根本不会被调用。