Django rest框架中的Multipart Parser

时间:2018-10-17 08:23:29

标签: python django python-3.x django-rest-framework postman

我正在尝试使用django rest框架上传图片。但是我有一个问题,当我使用邮递员表单时,它可以成功上传图像,但是当我尝试在邮递员中将json作为行键入时,它会向我返回此错误。

  

”提交的数据不是文件。请检查   形式。”

这是我的代码:

serializer.py

class UserImageCreateSerializer(serializers.HyperlinkedModelSerializer):
    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())

    class Meta:
        model = UserImages
        fields = ('user', 'image',)

view.py

class UserImageAPICreateView(ListCreateAPIView):
    queryset = UserImage.objects.all()
    serializer_class = UserImageCreateSerializer
    permission_classes = [AllowAny, AllowAnonymous]

我的请求

  

{
    “用户”:79,
     “ image”:“ /path/to/image.jpg”   }

注意:当我使用邮递员表格时,它可以成功上传,而当使用django rest框架HTML表格时,它也可以工作

我不知道我犯了什么错误。

所以,任何人都有解决方案,请帮助我。

1 个答案:

答案 0 :(得分:2)

仅通过在json上传数据中提供文件路径,您无法上传图像文件 像这样:

{
"image": "/path/to/image.jpg"
}

如果您这样发送,django会将图像数据视为普通字符串而非文件

这就是为什么您不断收到此错误的原因

"The submitted data was not a file. Check the encoding type on the form."

您需要发送图像数据,而不是图像路径。

这是上传图片的python请求示例 https://stackoverflow.com/a/45611449/2679465