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框架 - 如果表包含响应显示服务器错误(500)的数据