我想使用中间件来处理所有项目中的一些特殊异常。但是当引发异常时几乎从不调用中间件,我不明白这种行为的原因。
中间件类:
import logging
log = logging.getLogger(__name__)
class ExceptionMiddleware(object):
def process_exception(self, request, exception):
log.error("Сaught exception: %s"% exception)
我的中间件类:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Exception middleware
'middleware.ExceptionMiddleware',
)
也许我找到了一个原因。特定类的实例是作为全局值从所有视图中创建的,并且在调用某些视图之前引发异常。那么问题的另一部分,我如何才能捕捉到这些异常?