我想使用中间件来处理所有项目中的一些特殊异常。但是,当引发异常并且我不理解这种行为的原因时,几乎从不调用中间件。
中间件类:
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',
)
也许我找到了理由。特定类的实例是在全视图中创建的,因为在调用某个视图之前会引发全局值和异常。问题的另一部分,我如何捕捉这些例外?