Django REST 框架。如何获取包含协议、域和路径的页面的完整 url?

Posted

技术标签:

【中文标题】Django REST 框架。如何获取包含协议、域和路径的页面的完整 url?【英文标题】:Django REST Framework. How to get full url of a page with protocol, domain, and path? 【发布时间】:2021-03-28 22:03:07 【问题描述】:

Django REST 框架。我需要将页面的完整路径卸载到标签中。 比如有一个页面:

https://domain-name.com/category/article

serializers.py 中:

class someClass(serializers.ModelSerializer):
    url = serializers.URLField(source='get_absolute_url', read_only=True)
    class Meta:
        model = onlyURL
        fields = ['url']

这不能正常工作,因为我没有得到完整的网址,只有一部分:

<url>**/category/article**</url>

如何获取包含协议、域和路径的完整 url?

【问题讨论】:

【参考方案1】:

您可以为此使用serializers.SerializerMethodField()。例如:

class SomeClass(serializers.ModelSerializer):
    url = serializers.SerializerMethodField()
    class Meta:
        model = OnlyURL # using CamelCase for declaring Model Class
        fields = ['url']

    def get_url(obj):
       request = self.context.get('request')
       abs_url = obj.get_absolute_url()
       return request.build_absolute_uri(abs_url)

还要确保将request 传递为extra argument 或为此实现使用通用视图/视图集。

【讨论】:

您好!是的,这正是我所需要的。谢谢!

以上是关于Django REST 框架。如何获取包含协议、域和路径的页面的完整 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django(无需请求)中获取 URL(带有协议和域)?

如何在 django rest 框架中访问获取请求数据

如何在 django rest 框架中获取与外键相关的数据?

Django Rest框架 - 如果表包含响应显示服务器错误(500)的数据

如何使用 django rest 框架在模板中获取模型选择字段名称而不是 id

如何获取主键相关字段嵌套序列化器django rest框架的所有值