【发布时间】:2022-02-09 23:14:35
【问题描述】:
我从 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 向我显示了一个包含数组“图像”的字典。 但是当我做 request.FILES['images'] 它返回我一个文件。 这是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)
它给了我一个错误,因为文件不可迭代。 我是否以错误的方式访问数组?
【问题讨论】:
-
你能做一个“类型(文件)”来看看它是如何解释它的吗?
-
FormData()返回什么类型的对象?也许使用.append正在用"images"key 替换值
标签: python python-3.x django django-rest-framework