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

我是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
            )

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

qq58616 回答:django-restframework中的图像上传Crud操作

谢谢@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_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"
                }
            )

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

本文链接:https://www.f2er.com/3160166.html

大家都在问