我正在尝试通过引用示例编写自定义 django 中间件包 here :
from django.conf import settings
class StackOverflowMiddleware(object):
def process_exception(self, request, exception):
if settings.DEBUG:
print exception.__class__.__name__
print exception.message
return None
这存在于位置 venv/lib/python2.7/site-packages/django_error_assist/middleware.py
我尝试在我的 django 设置中调用/包含这个中间件,如下所示:
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',
'django_error_assist.middleware.StackOverflowMiddleware', ]
但是我得到了一个追溯,我一直在努力摆脱它,如下所示:
File "/Users/Shyam/PycharmProjects/untitled/untitled/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/Users/Shyam/PycharmProjects/untitled/venv/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
return WSGIHandler()
File "/Users/Shyam/PycharmProjects/untitled/venv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 151, in __init__
self.load_middleware()
File "/Users/Shyam/PycharmProjects/untitled/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 82, in load_middleware
mw_instance = middleware(handler)
TypeError: object() takes no parameters
我哪里错了?任何线索/帮助将不胜感激。我试图让这个中间件成为一个 pip 包。
我也做了调查 this 的功课, this当然还有官方的 django link但无法从这些方面获得太多帮助,因为我哪里出错了。
请您参考如下方法:
在 1.10 版本的 Django 中,中间件必须接受 get_response agrument,参见 docs .将您的类(class)更改为:
class StackOverflowMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_exception(self, request, exception):
if settings.DEBUG:
print exception.__class__.__name__
print exception.message
return None
