인프런 커뮤니티 질문&답변

tprpek님의 프로필 이미지
tprpek

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

장고 어드민 로그인 오류

작성

·

554

0

안녕하세요 선생님!

다름이 아니라 제가 db를 sqlite에서 mysql로 변경후 python manage.py runserver 를 통해

admin 사이트 로그인을 한후에 이런 오류가 뜨는데 무엇이 문제인지 잘 모르겠습니다.

다시 db를 sqlite로 바꾼후에는 로그인이 잘 되는것을 확인하였습니다!K-002.png[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)

K-003.png

답변 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 필드값을 알려주세요.

화이팅입니다. :-)

tprpek님의 프로필 이미지
tprpek
질문자

친절한 답변 감사합니다!! 제가 user model의 password의 max_length를 30으로 하여 뒷부분이 잘렸던 상황이었습니다!

password의 max_length를 수정하여 에러를 수정하였습니다!

감사합니다!!

tprpek님의 프로필 이미지
tprpek

작성한 질문수

질문하기