我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!
我想使用reverse()。
我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!
我想使用reverse()。
当前回答
我明白了:
wsgiref.util.request_uri(request.META)
获取包含模式、主机、端口路径和查询的完整uri。
其他回答
你可以试试"request.get_full_path()"
你也可以使用get_current_site作为sites应用程序的一部分(from django.contrib.sites.models import get_current_site)。它接受一个请求对象,如果request为None,则默认为您在settings.py中使用SITE_ID配置的站点对象。阅读更多使用站点框架的文档
e.g.
from django.contrib.sites.shortcuts import get_current_site
request = None
full_url = ''.join(['http://', get_current_site(request).domain, obj.get_absolute_url()])
它不像request.build_absolute_url()那样紧凑/整洁,但是当请求对象不可用时,并且您有一个默认的站点url时,它是可用的。
这在我的模板中很管用:
{{ request.scheme }}://{{ request.META.HTTP_HOST }}{% url 'equipos:marca_filter' %}
我需要完整的url传递给一个js获取函数。 我希望这对你有帮助。
你可以传递request reverse('view-name', request=request)或者用build_absolute_uri将reverse()包含进来request.build_absolute_uri(reverse('view-name'))
我使用这个代码:
request.build_absolute_uri('/')[:-1]
回应:
https://yourdomain.com