如何获得 Cloudinary 对象的绝对 url

How to get absolute url of a Cloudinary Obejct

我在我的 Django 应用程序中使用 Cloudinary。但是,我得到这样的输出:

{
    "post": "Test",
    "image_field": "image/upload/v1613308988/cizqjtpk59j5orvl2l5e.jpg"
}

我的模特:

class Image(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="image_field", default=None)
    image_field = CloudinaryField('image')

    def __str__(self):
        return self.post.title

我的序列化器:

class ImageSerializer(serializers.ModelSerializer):
    post = serializers.StringRelatedField()
    class Meta:
        model = Image
        fields = ["post", "image_field"]

我的观点:

class ImageViewSet(viewsets.ModelViewSet):
    serializer_class = ImageSerializer
    queryset = Image.objects.all()
    filter_backends = [DjangoFilterBackend]
    filter_fields = ['post', 'image_type']

    def get_permissions(self):
        if self.request.method in permissions.SAFE_METHODS:
            return [permissions.IsAuthenticatedOrReadOnly()]
        return [permissions.IsAdminUser()]

感谢您的帮助。 :)

@Zayyan Masud - 看起来 Cloudinary 正在返回路径而不是整个 URL。你有根 URL 例如 https://cloudinary.app.com 或类似的东西吗 您可以将根 URL 存储在您的设置中,然后当您收到 image_path 时将其保存在您的 image_field 中。然后当你想在你的模板中加载图像时,你可以像这样连接它们

我会写一个这样的模型方法

  def get_image_url(self):
        return'{}{}'.format(settings.CLOUDINARY_ROOT_URL,self.image_field)

然后在您的模板中,您只需调用

- <img src='{{obj.get_image_url}}' />