【问题标题】:Sending an image array as JSON response using DRF使用 DRF 将图像数组作为 JSON 响应发送
【发布时间】:2020-08-21 17:27:56
【问题描述】:

我想以 JSON 格式发送图像数组,如下所示:

{"id":1,"timeIntervel":4,"images":["http://127.0.0.1:8000/images/i1.jpg","http://127.0.0.1:8000/images/i2.jpg","http://127.0.0.1:8000/images/i3.jpg","http://127.0.0.1:8000/images/i4.jpg","http://127.0.0.1:8000/images/i5.jpg"]}

我用我的模型的外键尝试了这个。但未能如上得到响应。

模型.py

class slidesModel(models.Model):
    images = models.ImageField(upload_to='')
    def __str__(self):
        return str(self.images.name)

class slideImageArrayModel(models.Model):
    timeIntervel=models.IntegerField()
    images = models.ForeignKey(slidesModel, on_delete = models.CASCADE)
    def __str__(self):
        return str(self.id)

serializer.py

class slideSerializer(serializers.ModelSerializer):
    class Meta:
        model = slidesModel
        fields='__all__'

class slideImgArraySerializer(serializers.ModelSerializer):
    class Meta:
        model = slideImageArrayModel
        fields='__all__'
        depth = 1

views.py

class slidesViewSet(viewsets.ViewSet):
    def retrieve(self, request, pk=None):
        queryset = slideImageArrayModel.objects.all()
        user = get_object_or_404(queryset, pk=1) #it will always sends the first object
        serializer = slideImgArraySerializer(user)
        return Response(serializer.data)

我现有的输出需要一些修改才能实现实际输出:

{
    "id": 1,
    "timeIntervel": 4,
    "images": {
        "id": 8,
        "images": "/images/b1.jpg"
    }
}

我正在 localhost 中对此进行测试,但它没有显示完整的 url。我已经在设置和 urls.py 中包含了 MEDIA_ROOT url

【问题讨论】:

  • 你不应该在相反方向定义ForeignKey吗?
  • 您的意思是在 slideImageArrayModel 中?它会给出相同的结果吗?
  • 不,因为ForeignKey 是多对一关系,所以多个图像可以映射到同一个slidesModel,而slidesModel 可以有零个、一个或多个图像.
  • 你能给我一个例子或任何参考链接吗?我对 Django 很陌生

标签: arrays json image django-rest-framework


【解决方案1】:

只需在前端部分添加 localhost:8000 即可。 喜欢这段代码

<img src={"http://localhost:8000"+ note.img} alt="" role={'button'} onClick={(e)=> window.open(e.target.src)}/>

这将解决您的问题。

【讨论】:

  • 请不要使用回答帖子来询问您自己的问题或宣传您的其他帖子。
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
相关资源
最近更新 更多