오늘은 DRF의 Generic API VIew에 대해서 알아본다.
Generic API View
이 클래스는 기존에 사용하던 APIView를 확장하도록 하는 클래스다. CRUD에서 공통으로 사용되는 부분을 제공한다.
mixins를 사용해서 CRUD의 특정 세부 메소드를 제공하고, 오버라이딩을 통해 직접 커스터마이징 할 수 있다.
[mixins 포스팅]
https://he-kate1130.tistory.com/63
Basic settings
기본적인 view의 기능을 사용하기 위해서 다음과 같은 attributes가 필요하다.
queryset
뷰에 넘길 객체의 정보를 지정한다. 즉, 쿼리셋은 객체를 해당 뷰에 리턴해주기 위해서 사용해야한다.
쿼리셋의 경우 무조건 queryset을 설정해두거나, get_queryset()으로 오버라이드해서 사용해야 한다.
만약 view의 메서드를 오버라이딩 할 때는 queryset에 직접 접근하는 것 보다는 get_queryset()을 호출하는것이 좋다. 쿼리셋이 한번 얻어지면, 캐시로 모두 남기 때문이다!
serializer_class
해당 뷰에서 사용할 시리얼라이저를 지정한다.
쿼리셋처럼 직접 이 부분을 설정해두거나, get_seializer_class()메서드로 오버라이딩해야 한다.
lookup_field
개별 모델 객체의 조회에 사용할 모델의 필드를 지정한다.
기본값으로 pk로 설정되어있고, 사용자가 직접 지정하려면 API view와 시리얼라이저 양쪽에 직접 커스텀값을 입력해야 한다.
lookup_url_kwarg
객체의 조회에 사용할 url 키워드 인자를 지정하는 속성이다.
기본으로 lookup_field와 같은 값으로 설정된다. 또한 커스텀도 가능하다.
Pagination
페이지네이션을 제어하기위해서 다음의 attributes가 사용된다.
pagination_class
페이지네이션 클래스는 리스트의 결과를 페이지로 나누는 경우에 지정해야하는 속성이다.
기본값으로는 DEFAULT_PAGINATION_CLASS설정값과 동일하게 되어있고, pagination_class=None으로 설정해두면 해당 뷰에서는 페이지네이션이 비활성화 된다.
Filtering
쿼리셋을 필터링하는데에 사용되는 필터 백엔드 클래스의 목록을 제어한다.
filter_backends
쿼리셋을 필터링하는데에 사용할 필터 클래스의 목록이다.
기본값은 DEFAULT_FILTER_BACKENDS의 설정값과 동일하다.
'Project > Team22' 카테고리의 다른 글
[Team22]django .env 환경변수 활용하기 (0) | 2024.02.15 |
---|---|
[Team 22] DRF - Mixins (0) | 2024.02.08 |
[Team 22] DRF Authentication - dj-rest-auth (0) | 2024.02.08 |
[Team 22] Django REST framework (3) - Viewset (0) | 2024.02.03 |
[Team 22] Django REST Framework (2) - Serializers (0) | 2024.02.03 |