如何在Django REST Framework的序列化中创建缩略图?

时间:2018-10-21 05:42:11

标签: django django-rest-framework

我最近跳入了Django REST Framework。在使用它之前,我使用django-imagekit将图像缩略图化。就像您看到下面的模型一样,它运作良好,因此我使用了image的原始尺寸图像和image_thumbnail的缩略图尺寸图像。

models.py

class Image(models.Model):
    ...
    image = ProcessedImageField(null=True, blank=True, upload_to=image_path,
                                processors=[Thumbnail(1000, 1400)], format='JPEG')
    image_thumbnail = ImageSpecField(
        source='image', format='JPEG', options={'quality': 40})
    ...

问题是我不能在序列化器中使用image_thumbnail。我可以使用image,但是image_thumbnail会抛出错误消息A server error occurred. Please contact the administrator.

serializers.py

class ImageRandomSerializer(ModelSerializer):

    class Meta:
        model = Image
        fields = ('image', 'image_thumbnail', )

我不能在serializers.py中将来自models.py的图像缩略图化吗?我是否应该使用某些Django REST Framework缩略图工具为其缩略图?

更新

设置DEBUG = True后,它将引发错误'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

1 个答案:

答案 0 :(得分:1)

我刚刚从here找到了答案。

添加了image_thumbnail = ImageField(read_only=True),现在运行良好。

from rest_framework.serializers import ImageField

class ImageRandomSerializer(ModelSerializer):

    store = StoreDomainKeySerializer()
    image_thumbnail = ImageField(read_only=True)

    class Meta:
        model = Image
        fields = ('store', 'image', 'image_thumbnail',)