ミドルウェアを使用して、すべてのプロジェクトでいくつかの特別な例外を処理したいと考えています。しかし、例外が発生したときにミドルウェアが呼び出されることはほとんどなく、この動作の理由がわかりません。
ミドルウェア クラス:
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',
)
たぶん私は理由を見つけました。特定のクラスのインスタンスは、すべてのビューからグローバル値として作成され、いくつかのビューが呼び出される前に例外が発生します。質問の別の部分、どうすればこれらの例外をキャッチできますか?