Django Rest Framework:上传图像API [英] Django Rest Framework : Upload Image API

查看:115
本文介绍了Django Rest Framework:上传图像API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过django rest框架api将图像上传到我的django网站。
,但出现此错误

I am trying to upload image to my django website through django rest framework api. but I am getting this error


{
detail:多部分表单解析错误-边界无效multipart:无}

{ "detail": "Multipart form parse error - Invalid boundary in multipart: None" }

views.py

class UploadPhotoViewSet(APIView):
    parser_classes = (parsers.MultiPartParser, parsers.FormParser)

    def get(self, request,  format=None):
        model_object = Photo.objects.all()
        serializer = PhotoSerializer(model_object, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        serializer = PhotoSerializer(data=request.data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

序列化器.py

class PhotoSerializer(serializers.ModelSerializer):
    thumbnail = serializers.ImageField(use_url=True)
    source = serializers.ImageField(use_url=True)
    class Meta:
        model = Photo
        fields = '__all__'

model.py

class Photo(models.Model):
    type = models.CharField(max_length=100, default='photo', editable=False)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    description = models.TextField()
    category = models.CharField(max_length=255)

    def upload_thumb_dir(self, filename):
        path = '/media/{}/photos/thumbs/{}'.format(self.project.id, filename)
        return path
    thumbnail = models.ImageField(upload_to=upload_thumb_dir, default='/default/photo.png', blank=True)

    def upload_photo_dir(self, filename):
        path = '/media/{}/photos/{}'.format(self.project.id, filename)
        return path
    source = models.ImageField(upload_to=upload_photo_dir)

    def __str__(self):
        return self.title

< img src = https://i.stack.imgur.com/eBfCj.png alt =在此处输入图片描述>

推荐答案

我浪费了很多时间使用curl和httpie。
最好,最简单的方法是使用 python请求

I wasted lot of time using curl and httpie. The best and easy way is use python requests.

我发现这种使用Django Rest Framework命令行上传图像的方法。

I found this way to command line upload image using Django Rest Framework.

import requests
files = {'thumb': open('D:/thumb.jpg', 'rb'), 'preview': open('D:/preview.jpg', 'rb')}
r = requests.put('/path/to/your/django/rest/api', data={'key': value, 'key2': 'value2'}, files=files)
print r.status_code

如果您获得201,则表示您完成了。

If you get 201, means you done.

这篇关于Django Rest Framework:上传图像API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆