작성
·
554
0
안녕하세요 선생님!
다름이 아니라 제가 db를 sqlite에서 mysql로 변경후 python manage.py runserver 를 통해
admin 사이트 로그인을 한후에 이런 오류가 뜨는데 무엇이 문제인지 잘 모르겠습니다.
다시 db를 sqlite로 바꾼후에는 로그인이 잘 되는것을 확인하였습니다![24/Nov/2022 21:35:22] "POST /admin/login/?next=/admin/ HTTP/1.1" 500 175618
[24/Nov/2022 21:35:23] "GET /admin/login/ HTTP/1.1" 200 2217
Internal Server Error: /admin/login/
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\core\handlers\base.py", line 197, in getresponse
response = wrapped_callback(request, callback_args, *callback_kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\decorators\cache.py", line 62, in wrappedview_func
response = view_func(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\admin\sites.py", line 441, in login
return LoginView.as_view(**defaults)(request)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\generic\base.py", line 103, in view
return self.dispatch(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\decorators\debug.py", line 92, in sensitive_post_parameters_wrapper
return view(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\decorators.py", line 133, in wrappedview
response = view_func(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\utils\decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\decorators\cache.py", line 62, in wrappedview_func
response = view_func(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\views.py", line 90, in dispatch
return super().dispatch(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\generic\base.py", line 142, in dispatch
return handler(request, args, *kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\generic\edit.py", line 152, in post
if form.is_valid():
File "C:\ProgramData\Anaconda3\lib\site-packages\django\forms\forms.py", line 205, in is_valid
return self.is_bound and not self.errors
File "C:\ProgramData\Anaconda3\lib\site-packages\django\forms\forms.py", line 200, in errors
self.full_clean()
File "C:\ProgramData\Anaconda3\lib\site-packages\django\forms\forms.py", line 438, in full_clean
self._clean_form()
File "C:\ProgramData\Anaconda3\lib\site-packages\django\forms\forms.py", line 459, in cleanform
cleaned_data = self.clean()
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\forms.py", line 217, in clean
self.user_cache = authenticate(
File "C:\ProgramData\Anaconda3\lib\site-packages\django\views\decorators\debug.py", line 42, in sensitive_variables_wrapper
return func(*func_args, **func_kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\__init__.py", line 77, in authenticate
user = backend.authenticate(request, **credentials)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\backends.py", line 52, in authenticate
if user.check_password(password) and self.user_can_authenticate(user):
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\base_user.py", line 115, in check_password
return check_password(raw_password, self.password, setter)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\hashers.py", line 57, in check_password
must_update = hasher_changed or preferred.must_update(encoded)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\hashers.py", line 334, in must_update
decoded = self.decode(encoded)
File "C:\ProgramData\Anaconda3\lib\site-packages\django\contrib\auth\hashers.py", line 310, in decode
algorithm, iterations, salt, hash = encoded.split("$", 3)
ValueError: not enough values to unpack (expected 4, got 3)
답변 2
0
잘 해결되셔서 다행입니다.
password 필드는 이미 정의되어있기에 굳이 재정의하실 필요는 없구요. verbose_name을 한글로 표현하기 위함이시라면 settings의 LALGUAGE_CODE를 “ko-kr”로 지정하시면 한글 번역으로 사이트를 보실 수 있습니다. 이는 장고의 국제화 기능으로 유저의 언어 설정에 맞춰, 여러 언어로 문자열을 보여줄 수 있는 기능입니다.
화이팅입니다. :-)
0
안녕하세요.
mysql 데이터베이스의 auth_user 테이블에서 로그인을 시도하신 유저의 password 필드값을 알려주시겠어요?
암호 필드는 암호화되어서 $ 문자열을 구분자로 하여 총 4개의 값으로 구성되어야 하는 데, 3개 값 밖에 없어서 아래의 ValueError가 발생했습니다.
algorithm, iterations, salt, hash = encoded.split("$", 3)
ValueError: not enough values to unpack (expected 4, got 3)
예를 들어 아래와 같은 상황입니다.
a, b, c, d = 1, 2, 3
password 필드값을 직접 변경하신 것이 아니라, 장고를 통해서 설정하셨다면 이럴 일은 없을 듯 한데 말이죠.
로그인을 시도한 유저의 password 필드값을 알려주세요.
화이팅입니다. :-)
친절한 답변 감사합니다!! 제가 user model의 password의 max_length를 30으로 하여 뒷부분이 잘렸던 상황이었습니다!
password의 max_length를 수정하여 에러를 수정하였습니다!
감사합니다!!