2017-09-21 1 views
1

나는 브라우저가 A server error occurred. Please contact the administrator. 다음 내가형식 오류 : __init의 __ (1 개) 필요한 위치 인수 누락 'get_response'

`Traceback (most recent call last): 
    File "/usr/lib/python3.5/wsgiref/handlers.py", line 137, in run 
    self.result = application(self.environ, self.start_response) 
    File "/usr/local/lib/python3.5/dist-packages/django/contrib/staticfiles/handlers.py", line 63, in __call__ 
    return self.application(environ, start_response) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/wsgi.py", line 170, in __call__ 
    self.load_middleware() 
    File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 52, in load_middleware 
    mw_instance = mw_class() 
TypeError: __init__() missing 1 required positional argument: 'get_response' 

내 설정 파일이 해당

처럼이 오류가 반환 내 서버 python3 manage.py runserver 실행할 때
INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'accounts', 
] 

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.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'web.middleware.LoginRequiredMiddleware', 
] 

프로젝트에서 내가 만든 middleware.py 및이 모양은 다음과 같습니다.

from django.conf import settings 

class LoginRequiredMiddleware: 
    def __init__(self, get_response): 
     self.get_response = get_response 

    def __call__(self, request): 
     response = self.get_response(request) 
     return response 

그래서 anay 아이디어?!

답변

0

이제 오류가 해결되었습니다. 나는 1.11 장고에 장고 1.8에서

sudo pip install django==1.11

을 내 장고 버전을 업데이트하고 settings.py

MIDDLEWARE에게 MIDDLEWARE_CLASS을 변경하고 데이터베이스

python manage.py migrate 

를 마이그레이션과 잘

를 일 것
1

클래스를 인스턴스화 할 때 클래스가 자동으로 () 메소드를 실행하기 때문에 get_response를 매개 변수로 입력해야합니다. 그래서 :

newinstance = LoginRequiredMiddleware(response) 

당신이 빈 초기화가 취할하도록 설정 매개 변수를 누락 된 괄호를두면

.

+0

그래서 코드를 넣었습니까? –

0

미들웨어는 새로운 스타일의 미들웨어이므로 설정에 MIDDLEWARE_CLASSES 대신 MIDDLEWARE을 사용해야합니다.

관련 문제