如何使用 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 文件的名称