Django Rest Framework:上传图像API [英] Django Rest Framework : Upload Image API
本文介绍了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屋!
查看全文