#javascript #python #django-rest-framework #multipartform-data
#javascript #python #django-rest-framework #multipartform-данные
Вопрос:
Как я могу отправить файл изображения из react в django.
Я новичок в react и django, в настоящее время я успешно отправляю и получаю данные с / на конечные точки, теперь я хочу отправить файл изображения или любой другой файл из react в django или получить файл изображения из django в react.Я написал некоторый код, но он не работает должным образом, и мне довольно сложно отправить файл, я исследовал, но не получил никакой полезной ссылки.Пожалуйста, кто-нибудь может поделиться ссылкой, по которой я могу лучше понять, как это работает.Ниже приведена моя попытка:
ЧАСТЬ РЕАКЦИИ
let doc=new JsPDF();
doc.addImage(img,'JPEG',30,30);
//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));
ЧАСТЬ 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)
print("Hello")
print(payload)
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)
Но я получаю слишком много ошибок из приведенного выше кода, например, нет отправленного файла или ожидаемого dict, но получаю список, может кто-нибудь исправить приведенный выше код или может поделиться полезными ссылками, откуда я могу лучше понять.Заранее спасибо!
Ответ №1:
Если имя объекта в вашем models.py является ли, например, PdfModel писать так:
from django.core.files import File
def post(self, request):
my_file = File(request.data.get('file'))
new_pdf_file = PdfModel.objects.create(
field1=request.data.get('field1'),
field2=request.data.get('field2'),
field3=my_file )
new_pdf_file.save()
return Response({"something","something")