Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django rest框架保存缩略图图像_Python_Django_Rest_Python Imaging Library_Django Rest Framework - Fatal编程技术网

Python Django rest框架保存缩略图图像

Python Django rest框架保存缩略图图像,python,django,rest,python-imaging-library,django-rest-framework,Python,Django,Rest,Python Imaging Library,Django Rest Framework,我最近开始使用django+python进行开发,一切都进行得非常顺利,直到我遇到了一个问题,这个问题可能非常简单,但由于我对框架/语言缺乏经验,所以无法解决 我通过一个HTTP请求接收一个JSON对象,其中包含一些数据和两张图片。在这两张图片之前,我想保存其中一张图片的缩略图,但我看不出要完成这项任务。我可以保存所有的数据很容易,包括2个图像。但我无法找到一种方法来生成一种在DB中也有这种方法的方法,以及我想要的文件夹结构 我的文件夹应该如下所示: pictures user

我最近开始使用django+python进行开发,一切都进行得非常顺利,直到我遇到了一个问题,这个问题可能非常简单,但由于我对框架/语言缺乏经验,所以无法解决

我通过一个HTTP请求接收一个JSON对象,其中包含一些数据和两张图片。在这两张图片之前,我想保存其中一张图片的缩略图,但我看不出要完成这项任务。我可以保存所有的数据很容易,包括2个图像。但我无法找到一种方法来生成一种在DB中也有这种方法的方法,以及我想要的文件夹结构

我的文件夹应该如下所示:

pictures
   user
      originals
      processed
      thumbnails
   otherUser
       originals
       processed
       thumbnails
我的目标是:接收2张图片,从其中一张创建缩略图,然后将所有3张图片保存在3个单独的文件夹中,并保存到数据库的路径

下面是我的模型代码的样子

class SomeData(models.Model):
    owner = models.ForeignKey('auth.User', related_name='canopeo_data')
    adjustments = models.CharField(max_length=10)
    latitude = GeopositionField()
    longitude = GeopositionField()
    notes = models.TextField(null=True, blank=True)
    original_image = models.ImageField(upload_to=original_image, max_length=255, blank=True)
    processed_image = models.ImageField(null=False, upload_to=processed_image, max_length=255)
    thumbnail_image = models.ImageField(null=False, upload_to=thumbnail_image, max_length=255)
    date_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('date_time',)

    def save(self, *args, **kwargs):
        super(SomeData, self).save(*args, **kwargs)

def original_image(self, filename):
    url = "pictures/%s/originals/%s" % (self.owner.username, filename)
    return url


def processed_image(self, filename):
    url = "pictures/%s/processed/%s" % (self.owner.username, filename)
    return url


def thumbnail_image(self, filename):
    url = "pictures/%s/thumbnail/%s" % (self.owner.username, filename)
    return url
序列化程序代码

class SomeDataSerializer(serializers.HyperlinkedModelSerializer):
#url = serializers.HyperlinkedRelatedField(view_name='data', format='html')
owner = serializers.Field(source='owner.username')
thumbnail_image = serializers.Field(source='original_image')

class Meta:
    model = SomeData
    fields = ('url', 'adjustments', 'latitude', 'longitude', 'notes', 'original_image', 'processed_image',)
查看代码

class SomeDataViewSet(viewsets.ModelViewSet):
queryset = SomeData.objects.all()
serializer_class = SomeDataSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

def pre_save(self, obj):
    obj.owner = self.request.user
我已经尝试了很多方法,比如简单的缩略图、sorl\U缩略图,以及一些预先制作的方法。。但我无法找到一个具体的解决方案来满足我的需求


多谢各位

看起来您在定义
SomeDataSerializer
时有错误。在model
SomeData
字段中,原始图像定义为
ImageField
,但在serialiser中,它只是
字段,而不是。应使用正确的字段类型:

class SomeDataSerializer(serializers.HyperlinkedModelSerializer):
    #url = serializers.HyperlinkedRelatedField(view_name='data', format='html')
    owner = serializers.Field(source='owner.username')
    thumbnail_image = serializers.ImageField(source='original_image')
    ...

非常感谢。我将保存缩略图方法放回原处,并修改了seralizer字段。没有正确保存缩略图!!