로그인 view 검증?

오늘은 login 기능을 고쳤다.

Django에서 기본적으로 제공하는 User모델을 사용하지 않고, 직접 models.py에 Table을 깔았기 때문에 뭔가 이상해졌다.
근데 여기까지 와서 이거 다 버리고 User모델 확장으로 돌아가면 마감에 못 맞출 것 같다.

이가 없으면 잇몸이라도 써야 함.

  • Request에 포함된 ID와 PW 모두 Database내의 정보와 일치할 때 Client에게 Response를 돌려준다. (status=200)
  • PW가 일치하지 않을 때는 JsonResponse("message" , status=400)을 돌려준다.
  • ID가 일치하지 않을 때도 마찬가지로 Response를 돌려준다.

ID가 일치하지 않을 때 응답을 돌려주는 건 구현 못했다.

@csrf_exempt
def user_login(request):
    if request.method == 'POST':

        data = JSONParser().parse(request)

        account = data['pid']
        password = data['pwd']

        list_of_PID = Account.objects.values("pid")

        posted_inform = Account.objects.values("pid", "pwd").get(pid=account)
        posted_account = posted_inform['pid']
        posted_password = posted_inform['pwd']

        if account == posted_account and password == posted_password:
            return JsonResponse("Login Success", safe=False, status=200)
        elif Account.objects.filter(pid=account) is None:
            return JsonResponse("Check your ID", safe=False, status=400)
        elif password != posted_password:
            return JsonResponse("Check your PASSWORD", safe=False, status=400)
    else:
        return JsonResponse("Http Method Error", safe=False, status=400)

회원가입 및 회원 리스트 확인 코드를 긁어다 썼다.
그래서 첫 줄도 if문으로 시작한다.

Request를 json형식으로 받고 그 내용을 Python Dict형으로 변환했다. 그러고 나서 해당 Dict의 key를 이용해 value를 얻었다.

DB에서는 query 관련 메소드를 사용하여 각 value를 뽑아냈다.

이렇게 변수로 할당한 정보를 비교하여 일치 불일치를 따지고 응답을 return하는 방식으로 코드를 짰다.

그런데 ID의 일치 여부를 결정하는 조건문을 모르겠다.

요걸로도 해보고

if account != posted_account:

위의 코드로도 해봤는데 돌아오는 건 Internal Server Error(500)뿐이다.
최악의 상황에는 그냥 ID를 단독으로 검증하는 코드를 지우고,
'Check your ID or PW'라고 메세지를 리턴해야 할 판이다.

내일은 DB brower로 sqlite3 파일을 좀 뜯어보고, 쿼리문을 통해 자료 조작을 해봐야할 것 같다.

주말 중으로

  1. ID 일치 여부에 따른 예외 아닌 Return Reponse
  2. 서로 다른 두 Column의 각 row를 더하여 새로운 Column생성
    그리고 새롭게 생성된 Column의 row 출력

이 두 가지를 해결하는 것을 목표로 잡아야겠다.

좋은 웹페이지 즐겨찾기