我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!
我想使用reverse()。
我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!
我想使用reverse()。
当前回答
你可以试试"request.get_full_path()"
其他回答
你可以传递request reverse('view-name', request=request)或者用build_absolute_uri将reverse()包含进来request.build_absolute_uri(reverse('view-name'))
我知道这是一个老问题。但我认为人们仍然经常遇到这种情况。
有几个库可以补充Django的默认功能。我试过一些。当反向引用绝对url时,我喜欢以下库:
https://github.com/fusionbox/django-absoluteuri
另一个我喜欢的是,因为你可以很容易地把域、协议和路径放在一起:
https://github.com/RRMoelker/django-full-url
这个库允许你在模板中简单地写你想要的东西,例如:
{{url_parts.domain}}
class WalletViewSet(mixins.ListModelMixin, GenericViewSet):
serializer_class = WalletSerializers
pagination_class = CustomPaginationInvestment
def get_queryset(self):
######################################################
print(self.request.build_absolute_uri())
#####################################################
wallet, created = Wallet.objects.get_or_create(owner=self.request.user)
return Wallet.objects.filter(id=wallet.id)
你得到这样的输出
http://localhost:8000/v1/wallet
HTTP GET /v1/wallet 200 [0.03, 127.0.0.1:41608]
我遇到这个线程是因为我正在寻找为成功页面构建一个绝对URI。request.build_absolute_uri()给了我当前视图的URI,但为了获得我的成功视图的URI,我使用了以下....
request.build_absolute_uri(反向(success_view_name))
在做一个项目的时候,我学会了在Django中获取完整/绝对的URL。
如果你的URL在地址栏中是这样的:
https://stackoverflow.com/questions/2345708
如果你想把上面的URL显示给你的模板。
{{请求。不带GET参数。 {{请求。get_full_path}} #带有GET参数
对于上面的两个代码,这将打印在你的模板中
questions/2345708
另一种获取完整URL的方法是:
{{request.build_absolute_uri}}
这将打印在你的模板将是:
https://stackoverflow.com/questions/2345708