Django/DRF返回错误缩略图URL问题排查求助
问题原因与解决方案:DRF返回缩略图URL与原图一致
问题出在你的serializers.py配置里:
你给thumbnail字段设置了source='image',这会强制序列化器读取image字段的内容作为thumbnail的返回值,完全忽略了模型中thumbnail字段实际存储的缩略图路径。
解决方案
删掉thumbnail字段定义里的source='image'参数,让序列化器直接使用模型的thumbnail字段:
修改后的serializers.py代码:
class PostSerializer(serializers.ModelSerializer): thumbnail = serializers.ImageField(required=False) class Meta: model = Post fields = ('id', 'image', 'pub_date', 'imageDescription', 'poster', 'thumbnail') def to_representation(self, instance): self.fields['poster'] = PosterSerializer(read_only=True) return super(PostSerializer, self).to_representation(instance)
为什么这样有效
你的模型中thumbnail是独立的ImageField,数据库和文件系统里的缩略图路径都是正确的。去掉source='image'后,序列化器会正确读取模型中thumbnail字段存储的resize/image_thumb.jpg路径,结合MEDIA_URL生成正确的缩略图URL,返回的JSON里thumbnail就会显示为http://127.0.0.1:8000/media/resize/image_thumb.jpg。
内容的提问来源于stack exchange,提问作者artificial_nocturne
相关产品推荐
相关产品推荐

