【发布时间】:2020-12-30 23:28:35
【问题描述】:
我正在尝试在我的 api 中创建用于上传图像的端点,我正在使用 django rest 框架构建该端点。 当我尝试使用邮递员测试端点时,我得到了响应
"image": [
"The submitted data was not a file. Check the encoding type on the form."
]
状态码为 400。 当我尝试将带有图像的变量打印到控制台时,我得到了
[<TemporaryUploadedFile: test.jpg (image/jpeg)>]
我查看了一些教程,我认为我正确地发送了文件。 That is my post man configuration
这就是风景
class ImageView(APIView):
parser_classes = (MultiPartParser, )
permission_classes = (IsAuthenticated, IsRestaurant)
def post(self, request, *args, **kwargs):
data = {
'image': request.data.pop('image'),
'info': request.user.info.pk
}
file_serializer = RestaurantImageSerializer(data=data)
if file_serializer.is_valid():
file_serializer.save()
return Response(status=status.HTTP_201_CREATED)
else:
return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
序列化器
class RestaurantImageSerializer(serializers.ModelSerializer):
class Meta:
model = RestaurantImage
fields = '__all__'
和模型
class RestaurantImage(models.Model):
info = models.ForeignKey(RestaurantInfo, related_name='images', on_delete=models.CASCADE)
image = models.ImageField()
def __str__(self):
return self.image.name
【问题讨论】:
标签: django file-upload django-rest-framework