본문 바로가기
관리자

Programming-[Backend]/Django

[TIL] get_serializer()와 serializer.save()의 instance, get_object_or_404

728x90
반응형

 

get_serializer()와 serializer.save()의 instance

 

get_serializer() 에 들어가는 instance는 serializer의 update() 메서드를 불러오고 updata할 대상을 가리키게 된다. serializer.save()로 넘기는 정보는 클라이언트에서 넘어온 정보가 아니라 서버 측에서 추가로 넘기는 정보이다.

 

따라서 get_serializer()로 넘기는 정보는 검증 과정을 거쳐서(검증 메서드 통과 후) validated_data에 들어가지만, save()에 넘기는 추가 인자들은 클라이언트에서 넘어온 정보가 아니므로 검증을 거치지 않는다. 다만 똑같이 validated_data에 추가된다. 검증을 거치지 않은 추가적인 정보도 validated_data에 포함된다는 것이 의미적으로는 약간 모순적이다.

 

-> Serializer 안에서 validated_data에 접근할 때, create()나 update()를 Override 하면서 기본 인자로 받아오는 validated_data에 접근하여 데이터를 조회해야한다. Serializer 자체의 self.validated_data에 접근하면 save() 메서드에 추가로 넘긴 인자값은 찾아오지 못한다.

 

 


 

get_object_or_404

 

어떤 객체가 있는지 확인하고 없으면 바로 404 에러를 반환한다. 그런데 일반적으로 404 에러는 Not Found로, 서버 내 클라이언트가 요청한 URL 매칭 정보가 없을 때 나는 에러이다. 다시 말해, get_object_or_404()를 사용한다면 따로 에러 메시지를 설정하지 않았을 때 get_object_or_404() 때문에 난 에러인지, URL 매칭 에러로 인한 것인지 모두 다 살펴봐야한다.

728x90
반응형