我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!

我想使用reverse()。


当前回答

Request.get_host()将为您提供域。

其他回答

这在我的模板中很管用:

{{ request.scheme }}://{{ request.META.HTTP_HOST }}{% url 'equipos:marca_filter' %}

我需要完整的url传递给一个js获取函数。 我希望这对你有帮助。

检查请求。META字典。我认为它有服务器名和服务器端口。

你可以传递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}}

我遇到这个线程是因为我正在寻找为成功页面构建一个绝对URI。request.build_absolute_uri()给了我当前视图的URI,但为了获得我的成功视图的URI,我使用了以下....

request.build_absolute_uri(反向(success_view_name))