如果您知道BASE_URL,您将在其中保存图像,就像您在部署时一样,您可以将其保存在外部存储桶(存储)上,然后您可以进行如下操作:
class YourModelSerialiser(serializers.ModelSerializer):
image_url = serializers.SerializerMethodField()
class Meta:
model = YourModel
fields = ('some_field', 'some_other_field', 'image_url')
@staticmethod
def get_image_url(obj):
return BASE_URL + obj.image.url
但是当您不知道或不关心保存图像的存储桶(存储)url时,您可以使用另一种方法:
class YourModelSerialiser(serializers.ModelSerializer):
image_encoded= serializers.SerializerMethodField()
class Meta:
model = YourModel
fields = ('some_field', 'some_other_field', 'image_encoded')
@staticmethod
def get_image_encoded(obj):
return base64.b64encode(obj.image)
对于这个你必须import base64 然后在你的前端你可以像这样将图像加载为 base64
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Alt text" />
附言。在第一个示例中,obj.image.url 是存储桶中图像的路径(随便吧),但您需要完整路径才能在前端加载它。