READ
오퍼레이션 수행instance = self.get_object()
: 테이블로부터 instance 가져옴serializer = self.get_serializer(instance)
: 가져온 데이터(instance)를 serializer의 instance 인자에 넣음 serializer.data
: 직렬화의 결과가 담겨있는 데이터(dict 자료형)Response(serializer.data)
: Response 클래스에서 JSONRenderer().render(~)
메서드를 호출해서 ByteString으로 만들고 이를 client에게 응답함!WRITE
오퍼레이션 수행request.data
: client로부터 받은 데이터serializer = self.get_serializer(data=request.data)
: client로부터 받은 데이터를 serializer의 data 인자에 넣음serializer.is_valid(raise_exception=True)
: 유효성 검사를 필수적으로 수행!self.perform_create(serializer)
: instance를 생성하고 DB에 저장하는 기능 수행⭐if self.instance is not None: ~
: self.instance가 있으면 update()
메서드 호출else: ~
: self.instance가 없으면 create()
메서드 호출serializer = self.get_serializer(instance, data=request.data, partial=partial)
: UpdateAPIView에서는 serializer를 호출할 때, instance 인자를 넣어주고 있음!⭕serializer = self.get_serializer(data=request.data)
: 반면 CreateAPIView에서는 serializer를 호출할 때, instance 인자를 넣어주고 있지 않음!❌validated_data
)로 instance를 생성하고 DB에 저장하고 있음!ModelClass._default_manager.create(**validated_data
Comment.objects.create(**validated_data)
https://www.inflearn.com/course/%EC%9E%A5%EA%B3%A0-drf/dashboard