这篇笔记介绍了Django的全局异常处理。我们在处理一个请求的时候,会尽量去处理接口数据的格式和内部调用的函数,但是还是有可能会有一些意想不到的漏网之鱼,导致程序的异常而导致无法正常运行。甚至会直接向前端报错。为了避免这种情况的发生,让我们的后端服务看起来正常,即使出现错误,我们也可以给前端一个提示,在后端做一些错误日志记录。这里我们介绍全局异常处理。这里我们将使用Django的中间件和日志处理来实现。在本系列的第二十九篇和第三十九篇中,大家可以先熟悉一下这两个函数的使用。在介绍中间件的章节中,我们介绍了__call__()和process_view()函数。其实还有一个process_exception()函数。当我们的请求出现不可预测的错误时,该函数将被自动调用。功能。让我们看一个这样处理的例子:,请求):响应=self.get_response(request)返回响应defprocess_exception(self,request,exception):traceback_info=traceback.format_exc()记录器。info(f"request_path:{request.path},traceback_info:{traceback_info}")returnJsonResponse({"code":-1,"msg":"error"},status=500)在这里,我们使用回溯。format_exc()函数获取异常的错误信息,然后通过logger日志输出打印出来。日志信息这里我们主要输出两条信息,一条是接口请求的路径,request.path,一条是错误信息traceback_info。当然,我们也可以在这里记录更多的信息,比如请求的用户信息,请求的参数等等,记录之后后台可以通过日志的具体信息来查看是哪里出了问题。这里返回error,调用process_exception()函数后,我们这里直接返回response,还有一个http状态码status=500,这些信息可以自己拟定,到时候和前端约定好时间,检测返回某个A状态码如500,然后友好的显示错误弹窗信息,如正在后台处理错误报告。调用中间件定义好这个中间件后,我们需要在settings.py中引用这个中间件。比如我们放这个中间件的目录是hunter/middlewares/exception_middleware.py,我们需要在hunter/settings.py的MIDDLEWARE最后添加'hunter.middlewares.exception_middleware.ExceptionMiddleware',这一个。#hunter/settings.pyMIDDLEWARE=[...'hunter.middlewares.exception_middleware.ExceptionMiddleware',]当测试报错的时候,我们来尝试触发报错信息,比如注二中写的一个接口,这里我们修改一下,直接报错:#blog/views.pyfromdjango.httpimportHttpResponse,JsonResponsedeftime_view(request):html="
