这是我的项目的视图,其中我尝试使用 boto 将图像从本地系统上传到 s3。
class ImageList(generics.ListCreateAPIView):
queryset = Image.objects.all()
serializer_class = ImageSerializer
def post(self , request , format = None):
# import ipdb; ipdb.set_trace()
serializer = ImageSerializer(data = request.data)
if serializer.is_valid():
serializer.save()
print request.data
return Response({'received data' : request.data})
return Response(serializer.errors , status = status.HTTP_400_BAD_REQUEST)
class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Image.objects.all()
serializer_class = ImageSerializer
它对于 django admin 工作正常,但当我尝试使用 Django Rest Framework html 表单上传它时会生成错误。我已经在基于通用类的视图中重写了 post 方法。生成的错误是:
UnicodeDecodeError at /image/
'utf8' codec can't decode byte 0xff in position 15: invalid start byte
Request Method: POST
Request URL: http://127.0.0.1:8000/image/
Django Version: 1.9
Exception Type: UnicodeDecodeError
Exception Value:
'utf8' codec can't decode byte 0xff in position 15: invalid start byte
Exception Location: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py in encode, line 210
Python Executable: /usr/bin/python
Python Version: 2.7.10
Unicode error hint
The string that could not be encoded/decoded was: "����\u
我已经尝试了堆栈溢出上几乎所有可用的内容,但没有任何效果对我有用。我没有从其他地方复制代码,所以不会有奇怪的字符。
作为参考,这是模型.py file:
class Image(models.Model):
image_meta = models.ForeignKey('Image_Meta',on_delete=models.CASCADE,)
image = models.ImageField(upload_to='images-data')
# image = models.URLField(max_length = 500)
order = models.IntegerField()
version = models.CharField(max_length=10)
def __unicode__(self):
return (self.image)
See this for more detail :