Error: Invalid data. Expected a dictionary, but got InMemoryUploadedFile
Error: Invalid data. Expected a dictionary, but got InMemoryUploadedFile
我在尝试将多张图片从 React 上传到 Django Rest 时遇到上述错误 api。
这是我的 django 视图代码:
def post(self, request, *args, **kwargs):
posts_serializer = PostSerializer(data=request.FILES.getlist('image[]'), many=True)
print(posts_serializer)
if posts_serializer.is_valid():
posts_serializer.save()
return Response(posts_serializer.data, status=status.HTTP_201_CREATED)
else:
print('error', posts_serializer.errors)
return Response(posts_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
这是来自 posts_serializer 的印刷品:
PostSerializer(data=[<InMemoryUploadedFile: 1PSM Logo.png (image/png)>, <InMemoryUploadedFile: Microsoft-Azure-Fundamentals.png (image/png)>, <InMemoryUploadedFile: DP-900_ProductImage-1.png (image/png)>], many=True):
id = IntegerField(label='ID', read_only=True)
image = ImageField(max_length=100)
感谢任何帮助。
所以我终于用不同的方式让它工作了:
def post(self, request, *args, **kwargs):
if request.method == "POST":
allimages = request.FILES.getlist('images')
for oneimage in allimages:
Post.objects.create(images=oneimage)
return Response(status=status.HTTP_201_CREATED)
return Response(status=status.HTTP_400_BAD_REQUEST)
class Post(models.Model):
images = models.FileField(upload_to='post_images', default='')
我在尝试将多张图片从 React 上传到 Django Rest 时遇到上述错误 api。 这是我的 django 视图代码:
def post(self, request, *args, **kwargs):
posts_serializer = PostSerializer(data=request.FILES.getlist('image[]'), many=True)
print(posts_serializer)
if posts_serializer.is_valid():
posts_serializer.save()
return Response(posts_serializer.data, status=status.HTTP_201_CREATED)
else:
print('error', posts_serializer.errors)
return Response(posts_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
这是来自 posts_serializer 的印刷品:
PostSerializer(data=[<InMemoryUploadedFile: 1PSM Logo.png (image/png)>, <InMemoryUploadedFile: Microsoft-Azure-Fundamentals.png (image/png)>, <InMemoryUploadedFile: DP-900_ProductImage-1.png (image/png)>], many=True):
id = IntegerField(label='ID', read_only=True)
image = ImageField(max_length=100)
感谢任何帮助。
所以我终于用不同的方式让它工作了:
def post(self, request, *args, **kwargs):
if request.method == "POST":
allimages = request.FILES.getlist('images')
for oneimage in allimages:
Post.objects.create(images=oneimage)
return Response(status=status.HTTP_201_CREATED)
return Response(status=status.HTTP_400_BAD_REQUEST)
class Post(models.Model):
images = models.FileField(upload_to='post_images', default='')