当来自React Js的发布文件时,Django-rest剩余部分显示“无效的数据,但期望的字典,但出现了元组”

时间:2019-04-10 07:40:13

标签: reactjs django-rest-framework multipartform-data fetch-api form-data

尝试通过获取发布请求将File从ReactJS传递到Django-Rest。

我已经尝试了好几个小时才能从django传递文件以做出反应。但是遇到错误,首先我制作了pdf文件,然后将获取请求传递给django却出现了错误,我做了很多更改但总是出错例如,“未提交任何文件”,然后在我的Django代码中进行了更改,现在我收到了错误“ [”无效数据。应该有字典,但是有元组。“]”。 这是我的beloww代码:

反应码:

   genPDF=(evt)=>{

    evt.preventDefault();
   html2canvas(document.getElementById("pdfid")).then(canvas=>{
       let img=canvas.toDataURL('img/png');
       let doc=new JsPDF();
       doc.addImage(img,'JPEG',30,30);
       doc.output('blob');
       //doc.save('test.pdf');
       let formdata=new FormData();
       formdata.append('file',doc);
       this.postpdf(formdata)
   });

};

postpdf=(formdata)=>{
    console.log("Form data");
    console.log(payload);
    fetch(`http://127.0.0.1:8000/chauffeur/pdf_upload/`,
        {
            method: 'POST',
            body:formdata,
        }
    ).then(response => response.json()).catch(error => console.error('Error:', error));
};

DjangoCode

型号:

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

序列化器

      class PdfSerializer(serializers.ModelSerializer):

      class Meta:
       model = Pdf
       fields = ['file']

Views.py

 class PdfUpload(APIView):

      def get(self, request):
         return Response([PdfSerializer(file).data for file in Pdf.objects.all()])

  def post(self,request):
    payload=(request.data,request.FILES)
    serializer=PdfSerializer(data=payload)

    if serializer.is_valid():
        serializer.save()
        return Response("File Saved in Backend",status=status.HTTP_201_CREATED)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

我无法对问题进行排序,我将文件发布到Django的方式有误吗?还是我的发帖请求有问题?。请提出建议

0 个答案:

没有答案