오늘은 login 기능을 고쳤다.
Django에서 기본적으로 제공하는 User모델을 사용하지 않고, 직접 models.py에 Table을 깔았기 때문에 뭔가 이상해졌다.
근데 여기까지 와서 이거 다 버리고 User모델 확장으로 돌아가면 마감에 못 맞출 것 같다.
이가 없으면 잇몸이라도 써야 함.
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 파일을 좀 뜯어보고, 쿼리문을 통해 자료 조작을 해봐야할 것 같다.
주말 중으로
이 두 가지를 해결하는 것을 목표로 잡아야겠다.