gpt4 book ai didi

python - Django 休息框架保存缩略图

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:28 25 4
gpt4 key购买 nike

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

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

我的文件夹应该是这样的:

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

我已经尝试了很多东西,例如 easy_thumbnails、sorl_thumbnail 和一些预制的方法。但是我无法找到适合我一直想要的解决方案。

非常感谢!

最佳答案

看起来您在 SomeDataSerializer 的定义中有错误。在模型 SomeData 字段 original_image 中定义为 ImageField,但在序列化程序中它只是 Field,而不是 ImageField .您应该使用正确的字段类型:

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')
...

关于python - Django 休息框架保存缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25904090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com