Django Swagger Post Parameter 없음

Updated:

python

Django Swagger Post Parameter 없는 현상 해결법

문제

Swagger의 Post에 Parameters를 넣는 곳이 없다.

현재 코드는 다음과 같다.

class AlbumView(APIView):

    def get(self, request, format=None):
        albums = Album.objects.all()
        serializer = AlbumSerializer(albums, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        serializer = AlbumSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

찾아보니, GenericApiView를 사용하면 model과 Swagger의 post parameter 연동이 가능하다고 되어있다.

출처 : StackOverflow

따라서 GenericApiView를 적용하였다.

class AlbumView(GenericAPIView):    # GenericAPIView로 변경

    queryset = Album.objects.all()      # Generic Api View는 반드시 포함 해야한다.
    serializer_class = AlbumSerializer  # 추가한다

    def get(self, request, format=None):
        albums = Album.objects.all()
        serializer = AlbumSerializer(albums, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        serializer = AlbumSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

성공