Westagram SignUp, SignIn Endpoint

BLAKE KIM·2020년 8월 3일
0

현재 instagram 어플의 백엔드 영역을 만들고 있다. 완전하지 않지만 작성하면서 나타났던 에러나 몰랐던 것들을 위주로 작성하고 그 후에 merge가 되면 그 때 코드 전체를 리뷰하도록 하자.

User/views.py

...
class SignUpView(View):
    def post(self, request):
        data = json.loads(request.body)	# 딕셔너리 형태로 data에 저장된다.
...

        else:
            # 데이터베이스에 저장된 정보를 찾기 위해 filter를 사용했다.
            if User.objects.filter(phone_number = _phone_number):
            	return JsonResponse({'message':'Phone_number is already used'})

data의 형태가 딕셔너리 형태로 저장되기 때문에 데이터가 들어왔는지 확인하고 데이터를 원하는 조건과 비교를 할 때 key값이 들어왔는지, 키 값을 통해 value에 접근하는 등의 작업이 가능하다.


다음은 filter()get()의 차이점에 대해 공부해야 했다. filter() 대신 get()을 사용했을 때 몇몇 경우에 있어서 DoesNotExist 예외가 발생했다.

filter(**kwargs)

주어진 조회 매개 변수와 일치하는 객체를 포함하는 새로운 QuerySet을 반환합니다. filter()를 사용하는 경우 일반적으로 기준과 일치하는 둘 이상의 객체를 기대할 때마다이 작업을 수행합니다. 기준과 일치하는 항목이 없으면 filter()는 오류를 발생시키지 않고 빈 queryset을 반환합니다.

get(**kwargs)

주어진 조회 매개 변수와 일치하는 객체를 반환합니다.이 조회 매개 변수는 필드 조회에 설명된 형식이어야합니다. get()은 여러 객체를 찾은 경우 MultipleObjectsReturned를 발생시킵니다. MultipleObjectsReturned예외는 모델 클래스의 속성입니다.

지정된 매개 변수에 대해 개체를 찾을 수 없으면 get()DoesNotExist예외를 발생시킵니다. 이 예외는 모델 클래스의 속성이기도합니다. get()을 사용하면 기준과 일치하는 항목이 하나만 있어야합니다. 항목이 없거나 기준과 일치하는 여러 항목이있는 경우 오류가 발생합니다. 따라서 예외를 올바르게 처리하려면 try .. except ..블록이나 get_object_or_404와 같은 바로 가기 기능을 사용하는 경우 항상 사용해야합니다.

기본적으로 하나의 객체를 얻고자 하면 get(), 검색하는 매개 변수와 일치하는 모든 개체를 얻고자 하면 filter()를 사용한다.

profile
BackEnd

0개의 댓글