Django throws {"non_field_errors": ["Неверные данные. Ожидал словарь, но получил кортеж."]} Реагирует на JS - PullRequest
0 голосов
/ 10 апреля 2019

Попытка отправить файл с помощью извлечения сообщения от реакции на django rest, но полученный ответ django показывает:

{"non_field_errors": ["Неверные данные. Ожидается словарь, но получен кортеж."]}

Я пытаюсь отправить сгенерированный pdf файл в django, но не могу, сначала я создаю pdf, а затем отправляю запрос на получение почты

ReactJS

 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);

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

       //this.postpdf(formdata)
   });

};

DJANGO

class PdfUpload(APIView):

parser_classes = (MultiPartParser, FormParser,)

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)

SERIALIZER.PY

class PdfSerializer(serializers.ModelSerializer):

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

Отправляю ли я правильный файл, потому что он сгенерирован в PDF, а затемпосле этого я отправляю его через запрос на выборку, или это может быть проблемой в formdata, так как в конце django он ожидает словарь, но formdata действует как кортеж?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...