django-restframework中的图像上载Crud操作

问题描述 投票:0回答:1

我是django的新手,我想为drf中的图像上传CRUD创建API。

我已经完成了创建和读取图像的工作,但是不知道如何使用id更新和删除它

models.py

class File(models.Model):
    file = models.FileField(blank=False, null=False)

    def __str__(self):
        return self.file.name

serializers.py

class FileSerializer(serializers.ModelSerializer):
    class Meta:
        model = File
        fields = "__all__"

views.py


class FileUploadView(ListAPIView):
    parser_class = (FileUploadParser,)
    serializer_class = FileSerializer

    def get_queryset(self):
        queryset = File.objects.all()
        return queryset

    def post(self, request, *args, **kwargs):
        print(request.data)
        file_serializer = FileSerializer(data=request.data)
        print(file_serializer)
        if file_serializer.is_valid():
            file_serializer.save()
            return Response(
              file_serializer.data,
              status=status.HTTP_201_CREATED
            )
        else:
            return Response(
              file_serializer.errors,
              status=status.HTTP_400_BAD_REQUEST
            )

我想知道更新和删除的工作原理

python-3.x django-rest-framework
1个回答
0
投票

谢谢@manpikin,通过这种方式,我们可以轻松解决它

class FileViewSet(viewsets.ModelViewSet): 
    queryset = File.objects.all() 
    serializer_class = FileSerializer

但是就我而言,这之间有一些隐藏的代码,所以我以这种方式解决了它,我希望这可以帮助一些像我一样面临同样问题的人

views.py


class FileUploadView(ListAPIView):
    parser_class = (FileUploadParser,)
    serializer_class = FileSerializer

    def get_queryset(self):
        queryset = File.objects.all()
        return queryset

    def post(self, request, *args, **kwargs):
        print(request.data)
        file_serializer = FileSerializer(data=request.data)
        print(file_serializer)
        if file_serializer.is_valid():
            file_serializer.save()
            return Response(
                file_serializer.data,
                status=status.HTTP_201_CREATED
            )
        else:
            return Response(
                file_serializer.errors,
                status=status.HTTP_400_BAD_REQUEST
            )

    def put(self, request):
        imageid = self.request.POST.get('id')
        f_obj = LogoFile.objects.filter(id=imageid)
        file_serializer = FileSerializer(f_obj, data=request.data)
        print(file_serializer)
        if file_serializer.is_valid():
            file_serializer.save()
            return Response(
                file_serializer.data,
                status=status.HTTP_201_CREATED
            )
        else:
            return Response(
                file_serializer.errors,
                status=status.HTTP_400_BAD_REQUEST
            )

    def delete(self, request):
        imageid = self.request.POST.get('id')
        f_obj = LogoFile.objects.filter(id=imageid)
        if f_obj.exists():
            f_obj.delete()
            return Response(
                {
                    "Status": True,
                    "Message": "image deleted"
                }
            )

更新和删除将以这种方式工作

© www.soinside.com 2019 - 2024. All rights reserved.