小编Has*_*jdi的帖子

如何在 Django Rest 视图中获取媒体的完整 URL

我正在这个视图中处理图像/媒体/文件,并且我为文章模型编写了这个视图来完成一些工作:

@api_view(["GET"])
def article_grid_list(request):
    # fetched data from the database
    data = Articles.objects.all().order_by("-created_date")[:11]
    pinned_article = Articles.objects.get(pinned=True)

    # serialized data
    pinned_data = ArticlesSerializer(pinned_article)
    horizontal_data = ArticlesSerializer(data[:3], many=True)
    small_data = ArticlesSerializer(data[3:8], many=True)
    card_data = ArticlesSerializer(data[8:], many=True)

    final_data = {
        "pinned":pinned_data.data,
        "horizontal": horizontal_data.data,
        "small": small_data.data,
        "card": card_data.data
    }

Run Code Online (Sandbox Code Playgroud)

当我打印此请求的结果时,我得到cover如下字段:"cover": "/media/article/artice_cover_NkOUuZ7vH3zEejCgV.jpg",

但我想要带有主机名的图像 URL

当我编写像 ModelViewSet 这样的函数时,我会获取该字段的绝对 URL cover,并且我想在每个请求中获取图像的绝对 URL(主机名 + 图像路径)

模型视图集示例:

class ArticleGridList(viewsets.ModelViewSet):
    queryset = Articles.objects.all().order_by("-created_date")
    serializer_class = ArticlesSerializer
Run Code Online (Sandbox Code Playgroud)

我期望这样: "cover": "http://localhost:8000/media/article/artice_cover_NkOUuZ7vH3zEejCgV.jpg"

我的应用程序 urls.py 文件:

router = routers.SimpleRouter()
router.register('articles', …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

4
推荐指数
1
解决办法
867
查看次数

标签 统计

django ×1

django-rest-framework ×1