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

我想使用reverse()。


当前回答

试试下面的代码:

{{ request.scheme }}://{{ request.META.HTTP_HOST }}

其他回答

你可以传递request reverse('view-name', request=request)或者用build_absolute_uri将reverse()包含进来request.build_absolute_uri(reverse('view-name'))

要从模板创建到另一个页面的完整链接,您可以使用以下命令:

{{ request.META.HTTP_HOST }}{% url 'views.my_view' my_arg %}

request.META。HTTP_HOST给出主机名,url给出相对名。然后模板引擎将它们连接成一个完整的url。

django-fullurl

如果你想在Django模板中这样做,我已经发布了一个小的PyPI包Django -fullurl,让你用fullurl和fullstatic替换url和静态模板标签,就像这样:

{% load fullurl %}

Absolute URL is: {% fullurl "foo:bar" %}

Another absolute URL is: {% fullstatic "kitten.jpg" %}

这些徽章应该自动保持最新:

在视图中,当然可以使用request。build_absolute_uri代替。

你可以试试"request.get_full_path()"

试试下面的代码:

{{ request.scheme }}://{{ request.META.HTTP_HOST }}