Я использую Django 1.10 и пытаюсь поймать все исключения с помощью промежуточного программного обеспечения исключения.Django exception middleware: TypeError: object() не принимает параметров
Приведенный ниже код вызывает внутреннюю ошибку сервера:
mw_instance = middleware(handler)
TypeError: object() takes no parameters
views.py
from django.http import HttpResponse
def my_view(request):
x = 1/0 # cause an exception
return HttpResponse("ok")
settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'myproject.middleware.ExceptionMiddleware',
]
middleware.py
from django.http import HttpResponse
class ExceptionMiddleware(object):
def process_exception(self, request, exception):
return HttpResponse("in exception")
Я видел эти object() takes no parameters in django 1.10 и другие вопросы, касающиеся промежуточного программного обеспечения и middleware_classes, но я не уверен, как это относится к этому случаю или что мне действительно нужно изменить, чтобы исправить проблему.
Спасибо! Оба эти способа работали. – user984003
Использование 'MiddlewareMixin' исправило мою проблему. – sgiri
Средство MiddlewareMixin в Django1.11 не сможет определить 'request.user'. Он возвращает анонимный – Sarit