Django例外ミドルウェア:TypeError:object()はパラメーターを取りません



Django Exception Middleware



jiangoのアップグレード中、settings.pyを変更した後、完全なエラーメッセージは次のようになります。

Unhandled exception in thread started by Traceback (most recent call last): File '/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py', line 225, in wrapper fn(*args, **kwargs) File '/usr/local/lib/python3.6/site-packages/django/core/management/commands/runserver.py', line 140, in inner_run handler = self.get_handler(*args, **options) File '/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/runserver.py', line 27, in get_handler handler = super().get_handler(*args, **options) File '/usr/local/lib/python3.6/site-packages/django/core/management/commands/runserver.py', line 65, in get_handler return get_internal_wsgi_application() File '/usr/local/lib/python3.6/site-packages/django/core/servers/basehttp.py', line 44, in get_internal_wsgi_application return import_string(app_path) File '/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py', line 17, in import_string module = import_module(module_path) File '/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/__init__.py', line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File '', line 994, in _gcd_import File '', line 971, in _find_and_load File '', line 955, in _find_and_load_unlocked File '', line 665, in _load_unlocked File '', line 678, in exec_module File '', line 219, in _call_with_frames_removed File '/Users/fukainan/Desktop/jiango-blank/webapp/wsgi.py', line 16, in application = get_wsgi_application() File '/usr/local/lib/python3.6/site-packages/django/core/wsgi.py', line 13, in get_wsgi_application return WSGIHandler() File '/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py', line 140, in __init__ self.load_middleware() File '/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py', line 39, in load_middleware mw_instance = middleware(handler) TypeError: object() takes no parameters

エラーメッセージを表示すると、ミドルウェアでエラーが見つかります。
stackoverflowを見つけた後、新しいバージョンのDjangoがカスタムミドルウェアの記述方法を変更したことがわかりました。
https://docs.djangoproject.com/en/1.10/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware
ただし、次のように、settings.pyでカスタムミドルウェアが有効になっていません。



MIDDLEWARE = [ 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', ]

settings.pyでミドルウェアを探した後、次のコードを見つけます。

if DEBUG: MIDDLEWARE = list(MIDDLEWARE) MIDDLEWARE.append('jiango.debug.middleware.SQLDebugMiddleware')

SQLDebugMiddlewareを変更すると、問題は解決します。



転載:https://www.jianshu.com/p/8d5ebfc090f7