Python,Django(장고) westagram프로젝트에서 views.py에 로그인 뷰를 구현하는 중에서
로그인을 할 때 필요한 정보는 email과 password
try, except문을 통해 email이 맞지 않을 시 if문을 통해 오류를 내보내는 문장을 만들었다.
if not User.objects.filter(user_email = user_email).exists():
return JsonResponse({'message': 'INVALID_USER'}, status = 401)
.
.
.
.
틀린 이메일을 넣었을 때 if의 return값을 내보내지 않고 DoesNotExist: User matching query does not exist. 500 의 오류를 뱉어냈다....
.
.
.
user = User.objects.get(user_email = data['user_email'])
문제는 바로 이 문장이 if문 바로 위에 있었기 때문이었다.
이 문장이 의미하는 것은 Databases에 저장되어 있는 user_email중에 입력받은 user_email이 있다면 그 유저의 모든정보를 받아와라는 뜻이다.
그런데 여기서 틀린값이 들어오면 당연히 Databases에는 없기 때문에 없다고 오류를 내보낸다.
.
.
.
if not User.objects.filter(user_email = user_email).exists():
return JsonResponse({'message': 'INVALID_USER'}, status = 401)
if문으로 email이 맞는지 확인을 거친 이후에
user = User.objects.get(user_email = data['user_email'])
get을 통해 유저정보를 가져오는게 맞다.
처음에는 if문에 너무 집중을 해버려서 문제점을 찾지 못했지만 천천히 시간을 가지고 생각을 하니 문제점이 바로 보였다..!!