我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!
我想使用reverse()。
我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!
我想使用reverse()。
当前回答
request.get_host()
在django中使用这个请求对象
其他回答
我使用这个代码:
request.build_absolute_uri('/')[:-1]
回应:
https://yourdomain.com
如果你使用的是django REST框架,你可以使用rest_framework.reverse中的反向函数。这与django.core.urlresolvers的行为相同。相反,除了它使用一个请求参数来构建一个完整的URL。
from rest_framework.reverse import reverse
# returns the full url
url = reverse('view_name', args=(obj.pk,), request=request)
# returns only the relative url
url = reverse('view_name', args=(obj.pk,))
经过编辑,只提到REST框架中的可用性
你可以试试"request.get_full_path()"
你可以传递request reverse('view-name', request=request)或者用build_absolute_uri将reverse()包含进来request.build_absolute_uri(reverse('view-name'))
不是绝对的url,但我正在寻找只是得到主机。如果你想在view.py中获得host,你可以这样做
def my_view(request):
host = f"{ request.scheme }://{ request.META.get('HTTP_HOST') }"