如何使用 Django Rest Framework 访问请求中的文件数组
How to access array of files in request with Django Rest Framework
我从 React 前端向 Python 后端发送一个请求,在这个请求中我发送一个带有图像数组的 FormData(),如下所示:
const data = new FormData()
images.forEach(image => {
data.append('images', image.arquivo)
})
data.append('product', JSON.stringify(product))
return recuperarInstanciaAxios(true).post(`${recuperarUrlBackend()}/products/`, data)
但我无法访问 Python 中的这组图片。
通过 PyCharm 评估,request.FILES 向我展示了一个包含数组 'images' 的字典。
但是当我 request.FILES['images'] 它 returns 我一个文件。
这是 python 代码:
def create(self, request):
try:
productData = json.loads(request.data['product'])
serializer = ProductSerializer(data=productData )
if serializer.is_valid():
product = serializer.save()
files = request.FILES['images']
for image in files:
product_image= {'image': image, 'product': product.id}
image_serializer = ProductImage(data=product_image)
if image_serializer .is_valid():
image_serializer .save()
else:
raise IntegrityError('Error :' +
serializer.errors.__str__())
return Response(serializer.data,
status=status.HTTP_201_CREATED)
else:
raise IntegrityError('Error:' +
serializer.errors.__str__())
except IntegrityError as exc:
print(exc)
return Response(exc.__str__(),
status.HTTP_412_PRECONDITION_FAILED)
它给我一个错误,因为文件是不可迭代的。
我是否以错误的方式访问数组?
我认为问题在于你如何形成变量“文件”应该是这样的:
files = request.FILES.getlist('file_field')
file_field 是您的 html 文件的名称
我从 React 前端向 Python 后端发送一个请求,在这个请求中我发送一个带有图像数组的 FormData(),如下所示:
const data = new FormData()
images.forEach(image => {
data.append('images', image.arquivo)
})
data.append('product', JSON.stringify(product))
return recuperarInstanciaAxios(true).post(`${recuperarUrlBackend()}/products/`, data)
但我无法访问 Python 中的这组图片。 通过 PyCharm 评估,request.FILES 向我展示了一个包含数组 'images' 的字典。 但是当我 request.FILES['images'] 它 returns 我一个文件。 这是 python 代码:
def create(self, request):
try:
productData = json.loads(request.data['product'])
serializer = ProductSerializer(data=productData )
if serializer.is_valid():
product = serializer.save()
files = request.FILES['images']
for image in files:
product_image= {'image': image, 'product': product.id}
image_serializer = ProductImage(data=product_image)
if image_serializer .is_valid():
image_serializer .save()
else:
raise IntegrityError('Error :' +
serializer.errors.__str__())
return Response(serializer.data,
status=status.HTTP_201_CREATED)
else:
raise IntegrityError('Error:' +
serializer.errors.__str__())
except IntegrityError as exc:
print(exc)
return Response(exc.__str__(),
status.HTTP_412_PRECONDITION_FAILED)
它给我一个错误,因为文件是不可迭代的。 我是否以错误的方式访问数组?
我认为问题在于你如何形成变量“文件”应该是这样的:
files = request.FILES.getlist('file_field')
file_field 是您的 html 文件的名称