|
1 | | -from rest_framework import status |
2 | | -from rest_framework.response import Response |
3 | | -from rest_framework.viewsets import ReadOnlyModelViewSet |
| 1 | +from drf_spectacular.utils import extend_schema_view |
| 2 | +from rest_framework.viewsets import GenericViewSet |
| 3 | + |
| 4 | +from core.responses.base import BaseResponse |
4 | 5 |
|
5 | 6 | from .models import Merchandise |
6 | 7 | from .serializers import MerchandiseSerializer |
| 8 | +from .swagger import MerchandiseAPIDocs |
7 | 9 |
|
8 | 10 |
|
9 | | -class MerchandiseViewSet(ReadOnlyModelViewSet): |
10 | | - """ |
11 | | - MD 페이지는 상세보기 페이지가 존재하지 않으므로 retrieve는 생략되었습니다. |
12 | | - """ |
13 | | - |
| 11 | +@extend_schema_view(list=MerchandiseAPIDocs.list()) |
| 12 | +class MerchandiseViewSet(GenericViewSet): |
14 | 13 | queryset = Merchandise.objects.all() |
15 | 14 | serializer_class = MerchandiseSerializer |
16 | 15 |
|
17 | | - def list(self, request, *args, **kwargs): |
18 | | - queryset = self.filter_queryset(self.get_queryset()) |
19 | | - if not queryset.exists(): |
20 | | - return Response( |
21 | | - { |
22 | | - "status_code": "200", |
23 | | - "body": { |
24 | | - "code": "success", |
25 | | - "message": "MD 데이터가 존재하지 않습니다", |
26 | | - "data": [], |
27 | | - "pagination": {}, |
28 | | - }, |
29 | | - }, |
30 | | - status=status.HTTP_200_OK, |
31 | | - ) |
32 | | - serializer = self.get_serializer(queryset, many=True) |
33 | | - return Response( |
34 | | - { |
35 | | - "status_code": "200", |
36 | | - "body": { |
37 | | - "code": "success", |
38 | | - "message": "성공", |
39 | | - "data": serializer.data, |
40 | | - "pagination": {}, |
41 | | - }, |
42 | | - }, |
43 | | - status=status.HTTP_200_OK, |
44 | | - ) |
| 16 | + def list(self, request, *args, **kwargs) -> BaseResponse: |
| 17 | + queryset = self.get_queryset() |
| 18 | + page = self.paginate_queryset(queryset) |
| 19 | + serializer = self.get_serializer(page or queryset, many=True) |
| 20 | + return self.get_paginated_response(serializer.data) |
0 commit comments