【问题标题】:How to get absolute url of a Cloudinary Obejct如何获取 Cloudinary 对象的绝对 URL
【发布时间】:2021-05-17 15:47:15
【问题描述】:

我在我的 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()]

感谢您的帮助。 :)

【问题讨论】:

    标签: django django-rest-framework cloudinary


    【解决方案1】:

    @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}}' />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2013-07-25
      相关资源
      最近更新 更多