2월 20, 2022

[django][westagram] 로그인 기능 구현

 로그인 기능을 구현하면서 개인적으로 겪은 실수들을 기록합니다.


KeyError를 except구문을 통해 처리하려했는데, KeyError가 발생해도 except에 따른 코드가 도무지 실행되지 않습니다.



이렇게 try문 안에 login_email과 password 변수를 넣어주니 except에 따른 코드가 작동합니다.
try 구문에 따른 except가 작동하려면... try안에서 시도한 무언가가 실패해야 except로 코드가 넘어가는 것인데... try 밖에서 이미 KeyError가 났으니 except가 실행될리가 없죠... 아주 바보같은 실수지만 몇 시간동안 골머리를 앓았습니다ㅎ..

저번에는 함수 안에서 return이 되면서, 나머지 코드와 상관없이 함수가 끝나는 것을 모르고 실수를 했는데, 이런 실수는 하면서 고쳐가는 거겠죠..? 맞으면서 배우나 봅니다.

password에 대한 INVALID_USER 처리는 try안의 if문을 통해서 했지만, email에 대한 INVALID_USER처리는 except ObjectDoesNotExist: 를 통해 해주었습니다.

이메일이 틀렸을 경우에는 password에 대한 오류 처리처럼 

Users.objects.get(email=login_email)

를 통해 맞는 쿼리를 get 해올수가 없습니다. 


이렇게 DoesNotExist에러가 나게됩니다. 따라서 해당에러를 except문을 통해처리해줬습니다.

따라서, 이메일이 틀리거나, 이메일과 패스워드가 모두 틀린경우에는 except ObjectDoesNotExist를 통하여 에러처리를 하게됩니다.