Django - 捕获异常

use*_*455 8 python django exception-handling

这可能是一个Python新手问题......

try:
   #do something
except:
   raise Exception('XYZ has gone wrong...')
Run Code Online (Sandbox Code Playgroud)

即使DEBUG = True,我也不希望这raise Exception给我那个黄页.我实际上想通过将用户重定向到错误页面来处理异常或显示错误(在页面顶部给出一条CSS错误消息......)

我该如何处理?有人可以指导我吗?如果我只是提高它,我将获得黄色调试页面(再次,我不希望某些例外通过在DEBUG = True时显示调试页面来阻止网站运行).

如何在views.py中处理这些异常?

谢谢.

Jos*_*ton 20

你有三个选择.

  1. 提供404处理程序或500处理程序
  2. 在代码中的其他位置捕获异常并执行适当的重定向
  3. 提供已process_exception实现的自定义中间件

中间件示例:

class MyExceptionMiddleware(object):
    def process_exception(self, request, exception):
        if not isinstance(exception, SomeExceptionType):
            return None
        return HttpResponse('some message')
Run Code Online (Sandbox Code Playgroud)