reactjs - Django 抛出 {"non_field_errors":["Invalid data. Expected a dictionary, but got tuple."]} React JS
问题描述
试图通过 fetch post 从 react 到 django rest 发送文件,但得到了这个 django 响应显示:
{"non_field_errors":["无效数据。需要字典,但得到元组。"]}
我正在尝试将 pdf 生成的文件发送到 django 但无法执行,首先我创建 pdf 然后通过 fetch post 请求发送
反应JS
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)
序列化器.PY
class PdfSerializer(serializers.ModelSerializer):
class Meta:
model = Pdf
fields = ['file',]
我是否发送了正确的文件,因为它生成了 PDF,然后我通过 fetch 请求发送它,或者它可能是 formdata 中的问题,因为在 django 端它期望字典但 formdata 充当元组?
解决方案
尝试这个:
formdata.append({'file':doc});
代替
formdata.append('file',doc);
推荐阅读
- sql - 如何在 SQL 中查找表列的唯一组合?
- database - 如何修复颤振中的“未来不是类型”错误?
- python - 无法安装张量流
- php - php regex - 如何获得所有两位数
- node.js - 在 node express 应用程序中使用 multer 上传 .ipa 文件
- c++ - 依赖基类中的常量使离线定义不匹配?
- javascript - 本地日期转换在 IE 浏览器中不起作用
- c# - 阻止 Visual Studio 添加命名空间
- javascript - 在 ag-grid 中使用时,Vaadin-combo-box 将数组转换为 [object Object]
- html - AJAX 不会在第一个请求时显示图像,但会在连续请求时显示