로그인 View 기능 정의
1. 로그인을 할 때는 사용자 계정과 비밀번호가 필수입니다.
2. 계정이나 패스워드 키가 전달되지 않았을 경우, {"message": "KEY_ERROR"}, status code 400 을 반환합니다.
3. 계정을 잘 못 입력한 경우 {"message": "INVALID_USER"}, status code 401을 반환합니다.
4. 비밀번호를 잘 못 입력한 경우 {"message": "INVALID_USER"}, status code 401을 반환합니다.
5. 로그인이 성공하면 {"message": "SUCCESS"}, status code 200을 반환합니다.
URLconf 정의
1. 클라이언트의 요청을 받아서 로그인 뷰를 호출할 수 있도록 urls.py 를 작성해주세요.
로그인 확인
1. httpie를 이용하여 로그인을 진행해보세요.
from django.urls import path, include
from users.views import SignUpView, LoginView
urlpatterns = [
path("signup", SignUpView.as_view()),
path("login", LoginView.as_view()),
]
.
.
.
class LoginView(View):
def post(self, request):
try:
data = json.loads(request.body)
email = data['email']
password = data['password']
# 유저 검증하는 변수
user_verify = User.objects.filter(
email = data["email"],
password = data['password']
)
if not User.objects.filter(email = email).exists():
return JsonResponse({'MESSAGE' : 'INVALIDUSER : Wrongemail'}, status=401)
if not User.objects.filter(password = password).exists():
return JsonResponse({'MESSAGE' : 'INVALIDUSER : Wrongpassword'}, status=401)
# 유저 검증 변수로 user 존재를 확인
if user_verify.exists():
return JsonResponse({'MESSAGE' : 'SUCCESS'}, status=200)
except KeyError:
return JsonResponse({"message": "KEY_ERROR"}, status=400)
수정하기 전 users/views
user_verify 변수를 사용하지 않아도 email, password 검증이 끝나면 자동적으로 성공반환을 하기에 제거했습니다. 그리고 'INVALIDUSER : Wrongpassword'
라는 표현을 수정하였습니다.
.
.
.
class LoginView(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 Email'}, status=401)
if not User.objects.filter(password = password).exists():
return JsonResponse({'MESSAGE' : 'Invalid User Password'}, status=401)
# email, password filter를 통과하면 성공 반환
return JsonResponse({'MESSAGE' : 'SUCCESS'}, status=200)
# 키에러 시 에러 반환
except KeyError:
return JsonResponse({"message": "KEY_ERROR"}, status=400)