파이썬 Django(장고) 로그인 엔드 포인트 중 오류[1 편]

이정민·2021년 6월 2일
0

Where

Python,Django(장고) westagram프로젝트에서 views.py에 로그인 뷰를 구현하는 중에서


What

로그인을 할 때 필요한 정보는 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 의 오류를 뱉어냈다....
.
.
.


Why

(문제의 전체 코드)

user = User.objects.get(user_email = data['user_email'])

문제는 바로 이 문장이 if문 바로 위에 있었기 때문이었다.

이 문장이 의미하는 것은 Databases에 저장되어 있는 user_email중에 입력받은 user_email이 있다면 그 유저의 모든정보를 받아와라는 뜻이다.

그런데 여기서 틀린값이 들어오면 당연히 Databases에는 없기 때문에 없다고 오류를 내보낸다.
.
.
.


How

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문에 너무 집중을 해버려서 문제점을 찾지 못했지만 천천히 시간을 가지고 생각을 하니 문제점이 바로 보였다..!!

profile
안녕하세요.

0개의 댓글