from rest_framework import viewsets from rest_framework.views import APIView from rest_framework.response import Response from playlist.models import Track from playlist.serializers import TrackSerializer class TrackViewSet(viewsets.ModelViewSet): queryset = Track.objects.all() serializer_class = TrackSerializer class TrackListView(APIView): def get(self, request): tracks = Track.objects.all() serializer = TrackSerializer(tracks, many=True, context={'request': request}) return Response(serializer.data) class TrackDetailView(APIView): def get(self, request, id): track = Track.objects.get(pk=id) serializer = TrackSerializer(track, context={'request': request}) return Response(serializer.data) def put(self, request, id): track = Track.objects.get(pk=id) serializer = TrackSerializer(track, data=request.data, context={'request': request}) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=400) def post(self, request): serializer = TrackSerializer(data=request.data, context={'request': request}) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=400)