[Django] Westagram - Mission 3. 로그인 엔드포인트

Jeongyun Heo·2021년 2월 6일
0

Westagram

목록 보기
2/3
post-thumbnail

Mission 3. 로그인 엔드포인트

우리 서비스의 회원으로 등록된 사용자를 로그인하도록 허가하는 과정에 대해 진행하겠습니다.

user/views.py

import json

from django.http     import JsonResponse, HttpResponse
from django.views    import View

from user.models import User

... (회원가입 클래스 생략)

class SignInView(View):
    def post(self, request):
        try:
            data     = json.loads(request.body)
            email    = data['email']
            password = data['password']

            if not User.objects.filter(email=email).exists():
                return JsonResponse({'message': 'INVALID_USER'}, status=401)
            user = User.objects.get(email=email)
            
            if user.password == password:
                return JsonResponse({'message': 'SUCCESS'}, status=200)
            return JsonResponse({'message': 'INVALID_USER'}, status=401)

        except KeyError:
            return JsonResponse({'message': 'KEY_ERROR'}, status=400)  

westagram/urls.py

from django.urls import path, include

urlpatterns = [
    path('user', include('user.urls'))
]

user/urls.py

회원가입과 로그인 경로를 나누었다.

from django.urls import path

from user.views import SignUpView, SignInView

urlpatterns = [
    path('/signup', SignUpView.as_view()),
    path('/signin', SignInView.as_view())
]

터미널에 명령어 입력할 때도
예를 들어 로그인이면
http POST 127.0.0.1:8000/user/signin
이런 식으로 경로를 덧붙여 주어야 한다.

멘토님 리뷰

else문을 안 쓰고 작성하는 법을 염두에 두자

처음에 이렇게 작성하였는데..

            if User.objects.filter(email=email).exists():
                user = User.objects.get(email=email)
            else:
                return JsonResponse({'message': 'INVALID_USER'}, status=401)

👇 이렇게도 해 볼 수 있다면서 고쳐주셨다

            if not User.objects.filter(email=email).exists():
                return JsonResponse({'message': 'INVALID_USER'}, status=401)
            user = User.objects.get(email=email)

else문을 안 쓰고 작성하는 법을 염두에 두자

이것도 위와 동일하게 처음에는 이렇게 작성했었는데...

            if user.password == password:
                return JsonResponse({'message': 'SUCCESS'}, status=200)
            else:
                return JsonResponse({'message': 'INVALID_USER'}, status=401)

👇 else문을 생략해서 쓰는 걸로 고쳐주셨다

            if user.password == password:
                return JsonResponse({'message': 'SUCCESS'}, status=200)
            return JsonResponse({'message': 'INVALID_USER'}, status=401)

0개의 댓글