Django REST framework_Mixins

nikevapormax·2022년 9월 19일
0

TIL

목록 보기
97/116
post-custom-banner

공식문서

Mixins

정의

  • mixin class들은 기본적인 view 동작을 제공하기 위해 사용되는 action들을 제공한다.
  • 주의해야 할 점은 mixin class들은 .get() 이나 .post()와 같은 handler method를 직접 정의하는 것이 아닌 action method를 제공하는 것이다.
  • 행위들의 좀 더 유연한 구성을 만들 수 있도록 한다.
  • rest_framework.mixins로부터 import해 사용할 수 있다.

ListModelMixin

  • queryset을 나열할 수 있는 .list(request, *args, **kwargs) 메서드를 제공한다.
  • 만약 queryset의 내용이 존재한다면 200 OK response를 반환한다.
    • serialized된 queryset가 response의 body가 된다.
  • response data는 선택적으로 페이징될 수 있다.

CreateModelMixin

  • 새로운 model instance를 생성하고 저장할 수 있는 .create(request, *args, **kwargs) 메서드를 제공한다.
  • 만약 object가 생성된다면 201 Created response를 반환한다.
    • serialized된 object가 response의 body가 된다.
  • 만약 표현에 url이 key name으로 포함되어 있다면, response의 Location header가 value 값과 같이 채워진다.
  • 만약 제공된 request data로 object 생성이 불가능하다면 400 Bad Request response가 error detail을 body로 가지고 반환된다.

RetrieveModelMixin

  • 현재 존재하고 있는 model instacne를 검색해 response로 반환하는 .retrieve(request, *args, **kwargs) 메서드를 제공한다.
  • 만약 object가 검색된다면 200 OK response가 반환된다.
    • serialized된 object가 response의 body가 된다.
  • 검색되지 않는다면 404 Not Found를 반환한다.

UpdateModelMixin

  • 현재 존재하고 있는 model instance를 업데이트하고 저장할 수 있는 .update(request, *args, **kwargs) 메서드를 제공한다. -> PUT
  • 또한 update 메서드와 비슷하지만 모든 필드를 선택적으로 업데이트할 수 있는 .partial_update(request, *args, **kwargs) 메서드를 제공한다. -> PATCH
  • 만약 object의 업데이트에 성공한다면 200 OK를 반환한다.
    • serialized된 object가 response의 body가 된다.
  • 만약 object의 업데이트에 실패하게 되면 400 Bad Request response가 error detail을 body로 가지고 반환된다.

DestroyModelMixin

  • 현재 존재하고 있는 model instance를 삭제하는 .destroy(request, *args, **kwargs) 메서드를 제공한다.
  • 만약 object가 성공적으로 삭제되면 204 No Content response를 반환한다.
  • 삭제에 실패한다면 404 Not Found를 반환한다.
profile
https://github.com/nikevapormax
post-custom-banner

0개의 댓글