我正在尝试通过django rest framework api将图像上传到我的django网站。 但是我收到了这个错误
{ " detail":"多部分表单解析错误 - 多部分中的无效边界:无" }
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)
serializers.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
答案 0 :(得分:1)
我浪费了很多时间使用curl和httpie。 最好和最简单的方法是使用python requests。
我使用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,就意味着你已经完成了。