Views & Viewsets 주요 함수 및 활용
DRF ViewSet에서 자주 사용되는 핵심 함수들과 실무 활용법
@action 데코레이터
기본 CRUD 외 커스텀 엔드포인트 추가
detail=True/False: 개별 객체/전체 목록 대상 액션 설정methods: 허용할 HTTP 메서드 지정
@action(detail=True, methods=['post'])
def publish_post(self, request, pk=None):
post = self.get_object()
post.is_published = True
post.save()
return Response(PostSerializer(post).data)get_serializer_class
요청 종류(action)에 따라 다른 Serializer 동적 반환
def get_serializer_class(self):
if self.action == 'list':
return PostSimpleSerializer
elif self.action == 'create':
return PostCreateSerializer
return PostDetailSerializerget_queryset
동적으로 QuerySet 필터링 및 조작
get_object
특정 객체 조회 로직 커스터마이징
perform_create / perform_update / perform_destroy
객체 생성/수정/삭제 시 추가 로직 실행
get_permissions
HTTP 메서드나 action별로 다른 권한 클래스 적용
lookup_field
pk 대신 slug, uuid 등 다른 필드로 객체 조회
get_serializer_context
Serializer에 추가 컨텍스트 데이터 전달
filter_queryset
필터링, 검색, 정렬 로직 적용
paginate_queryset
커스텀 페이지네이션 로직
Last updated
