私はMiddleWareを動作させるのに苦労しています。SimpleMiddlewareの実装方法は?
MIDDLEWARE_CLASSES = [
'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',
'portal.middleware.SimpleMiddleware'
]
を、私はportal/middleware/MiddleWare.py
でこのクラスを実装:私は私のsettings.py
でこれを入れ
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
しかし、実行しているとき、私はTypeError
を得る:
TypeError: __init__() takes exactly 2 arguments (1 given)
あなたのdjangoバージョンは何ですか? –
@BearBrown 1.10.2 –
'' portal.middleware.SimpleMiddleware ''の設定では、ポータル/ミドルウェアの '' SimpleMiddleware''クラスにあなたのファイル名 '' portal/middleware/MiddleWare.py'と一致しません。 Pythonでは、CamelCaseのモジュール名を避けるのが普通です。 – Alasdair