TIL DAY 17-2 || Django Q
Q는 django 내부 orm 으로 where 절에 or
문 혹은 and
문을 추가하고 싶을 때 사용한다.
다음은 로그인 검사 시 User 테이블에서 email
, phone_number
, username
중 하나와 비밀번호를 입력받았을 때 해당되는 정보가 없으면 INVAILD_USER 를 리턴하는 코드의 일부를 가져와봤다.
from django.db.models import Q
is_valid_account = User.objects.filter((Q(email=email) | Q(username=username) | Q(phone_number=phone_number)) & Q(password=password)).exists()
if not is_valid_account:
return JsonResponse({'message': 'INVALID_USER'}, status=401)
User.objects.filter((Q(email=email) | Q(username=username) | Q(phone_number=phone_number))
이 표현식은 다음과 완벽하게 동일하다.
User.objects.filter(email=email) | User.objects.filter(username=username) | User.objects.filter(phone_number=phone_number)
이걸 Q 객체를 사용해서 위 코드와 같이 간편하게 표현할 수 있는 것이다.
Q(password=password))
User.objects.filter(password=password) 로 풀어쓸수 있다.
이제 앞에 or 연산으로 계산해서 나온 컬럼(들) 과
뒤에 패스워드를 & 연산으로 계산하면 매칭하는 결과 값이 나올것이다.
안나오면 로그인 실패이다.
Author And Source
이 문제에 관하여(TIL DAY 17-2 || Django Q), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tk_kim/TIL-DAY-17-2-Django-Q저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)