작성
·
514
0
선생님,안녕하세요 다음과 같은 오류가 발생했는데 어떻게 해결해야할까요?
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 3.0.14
Python Version: 3.9.7
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog1']
Installed 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']
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\sessions\backends\base.py", line 199, in _get_session
return self._session_cache
During handling of the above exception ('SessionStore' object has no attribute '_session_cache'), another exception occurred:
File "C:\ProgramData\Anaconda3\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\admin\sites.py", line 249, in wrapper
return self.admin_view(view, cacheable)(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\admin\sites.py", line 220, in inner
if not self.has_permission(request):
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\admin\sites.py", line 194, in has_permission
return request.user.is_active and request.user.is_staff
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\functional.py", line 224, in inner
self._setup()
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\functional.py", line 360, in _setup
self._wrapped = self._setupfunc()
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\middleware.py", line 24, in <lambda>
request.user = SimpleLazyObject(lambda: get_user(request))
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\middleware.py", line 12, in get_user
request._cached_user = auth.get_user(request)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\__init__.py", line 173, in get_user
user_id = _get_user_session_key(request)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\__init__.py", line 58, in _get_user_session_key
return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\sessions\backends\base.py", line 64, in __getitem__
return self._session[key]
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\sessions\backends\base.py", line 204, in _get_session
self._session_cache = self.load()
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\sessions\backends\db.py", line 44, in load
return self.decode(s.session_data) if s else {}
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\sessions\backends\base.py", line 110, in decode
encoded_data = base64.b64decode(session_data.encode('ascii'))
File "C:\ProgramData\Anaconda3\lib\base64.py", line 87, in b64decode
return binascii.a2b_base64(s)
Exception Type: Error at /admin/
Exception Value: Incorrect padding
답변 2
0
장고 3.1 부터 세션 데이터 저장 시에 암호화가 되어 저장이 됩니다. 3.0 까지는 base64 인코딩 정도만 해서 저장했었거든요.
그래서 장고 프로젝트를 3.1 이상에서 생성하고 세션까지 생성하신 후에, 장고 프로젝트 구동을 장고 3.0 이하에서 구동하시면, 세션 데이터 decode 시에 Incorrect padding 오류가 발생합니다.
낮은 버전에서 높은 버전으로 올리면 호환이 되는 데, 의도치않게 높은 버전에서 동작하던 데이터가 낮은 버전으로 서버가 구동이 되면 문제가 되는 거죠.
아마도 장고 초기 설치 시에 장고 최신 버전도 쓰셨다가, 강의에서 안내하는 3.0.x 버전도 설치하시면서 꼬이신 상황이 아닐까 싶습니다.
해당 오류가 발생하실 경우, 다음 3가지 장고 버전이 모두 일치하는 지 확인해보세요.
이에 대한 대응으로
그리고, 질문 제목에는 본 질문을 요약해서 써주시면, 다른 분들에게도 본 질문이 도움이 될 수 있습니다. 부탁드리겠습니다. 본 질문의 핵심 키워드는 Incorrect padding 오류이니 이를 제목에 기입해주시면 좋습니다. 오류 메세지 끝에서 확인하실 수 있습니다.
화이팅입니다. :-)
0
안녕하세요.
혹시 settings.py 소스코드 상단의 주석에 보시면, 본 프로젝트를 생성한 장고 버전이 적혀있습니다. 혹시 버전이 얼마로 쓰여있으신가요?
그리고 django-admin --version 의 출력값과 python manage.py --version 의 출력값이 어떻게 되나요?