회원가입을 담당할 SignUpView를 만들었으니, 이제 로그인을 담당할 SignInView를 만들어볼 차례다.
회원가입 시 로그인 시 사용할 id를 만들지 않았으므로 이메일이 id를 담당한다고 친다면, 로그인에 필요한 데이터는 email과 password 두개일 것이다.

기본적인 로직은 아래와 같다.
email과 password 데이터에 각각 변수명을 부여보기엔 큰 문제가 없어보여 POSTMAN을 이용하여 몇번의 확인 절차를 거쳤다.

정상 출력 확인

정상 출력 확인

정상 출력 확인


뭔가가 잘못됐다.
예외구문으로 KeyError 자체를 설정했기에 KeyError 메세지가 떠야하는데 출력이 되지 않았다.
다른건 다 됐는데 왜 except문에서만 에러가 생기는지 의아해 이리저리 고민을 해보았다.
MDN도 찾아보고 여러 블로그도 찾아보고 지인에게 물어보기도 하고..
결론은 예외처리에 사용하는 try except 문에 대한 내 이해가 부족했던 탓이었다.
결과부터 얘기하자면, 아래와 같이 코드를 고치면 정상적으로 KeyError 메세지가 출력이 된다.

입력받는 데이터 변수를 try문 안에 대입을 해줘야한다.
예외처리에 대한 파이썬 MDN의 설명을 보자.

except문은 try문을 돌릴때, 우리가 예외처리로 설정해둔게 발생할 '때만' except블록이 수행된다.
즉 예외처리문 자체가 하나의 작은 박스라고 보면 되는데, 박스 안에 어떤 변수를 사용할 지 지정을 안해줬으니 except문이 잡아내지 못하고 서버가 터진 것이다.
위와 같이 설정을 해두고 KeyError를 준다면?

KeyError에 대해 설정해뒀던 except문이 정상적으로 작동되는 것을 볼 수 있다.
혹시나 해서 앞에 만들었던 SignUpView를 확인해보았다.

역시나 변수가 잘못된 위치에 있다..
만들어만 두고 KeyError 메시지가 정상 출력되는지 확인을 안했던것 같다.
호다닥 아래와 같이 수정 완료

SignInView를 직접 만들어보았고, 잘못 코딩된 것에 대한 수정을 잘 마쳤다.
다음엔 Bcrypt를 이용한 비밀번호 암호화와 JWT를 이용한 토큰 생성에 대한 과정을 복습을 할 예정이다.
SignInView를 짜보며 KeyError 출력 오류를 잡아냈었다.
사실 KeyError를 제외한 다른 오류들은 정상 출력되는 것을 보며 안심했었는데 역시 끝까지 해봐야하는거 같다.
결국 끝까지 디버깅을 하지 않았던 SignUpView 버그도 뒤늦게 발견하여 수정을 했던걸 생각하면, 한번 할 때 꼼꼼히 해야한다는 것을 다시 한 번 깨닫게 되었다.
KeyError 출력 오류를 잡아내며 예외처리문에 대해 다시한번 공부하고, 부족했던 부분을 알아낼 수 있었다.
try except문에 작은 boundary가 펼쳐져있다고 지금은 생각하고 있는데, 이게 맞는지, 또 동일한 실수를 다음에도 반복하지는 않을지 조금은 걱정이 된다.
뭐 여러번 실수하다보면 자연스레 몸이 깨닫게 되겠지..
참고
https://wikidocs.net/30
https://docs.python.org/ko/3/tutorial/errors.html
https://velog.io/@jinatra/Django-인스타그램-연습-1#마무리