본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[TIL] trouble shooting - serializer.data

1. seriaizers.py의 시리얼라이저 사용에서의 오류

 

 

문제

 

회원가입을 작성 중

 

accounts/views.py

class UserCreateAPIView(APIView):
    def post(self, request):
        is_valid, err_msg = validate_signup(request.data)
        if not is_valid:
            return Response({"error": err_msg}, status=status.HTTP_400_BAD_REQUEST)

        user = User.objects.create_user(**request.data)
        print(user)
        serializer = UserSerializer(user)
        print(serializer.data)
        return Response(serializer.data, status=status.HTTP_200_OK)

 

 

accounts/serializers.py

class UserSerializer(serializers.Serializer):

    class Meta:
        model = User
        fields = (
            "id",
            "username",
            "email",
            "birthday",
        )

 

 

위와 같이 뷰와 시리얼라이저를 작성했을 때 유저는 정상적으로 나왔지만

시리얼라이저에 데이터가 제대로 넘어오지 않았다.

 

 

 

 

해결

 

문제는 시리얼라이저에서 상속받은 시리얼라이저가 모델 시리얼라이저가 아닌 일반 시리얼라이저를 상속받아 발생한 문제였다

 

수정된 accounts/serializers.py

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = (
            "id",
            "username",
            "email",
            "birthday",
        )

 

시리얼라이저를 수정한 후에는 아래와 같이 보내준 데이터가 잘 전달되는 것을 확인할 수 있었다.