如何在Django without the Sites module中获取完整/绝对网址(例如https://example.com/some/path
)?这太傻了..。我应该不需要查询我的数据库来抓取URL!
我想在reverse()
中使用它。
发布于 2010-02-27 10:00:08
根据请求使用方便的request.build_absolute_uri()方法,将相关的url传递给它,它将为您提供完整的url。
默认情况下,将返回request.get_full_path()
的绝对URL,但您可以将其作为第一个参数传递给相对URL,以将其转换为绝对URL。
发布于 2013-08-23 15:07:06
如果你想在reverse()
中使用它,你可以这样做:request.build_absolute_uri(reverse('view_name', args=(obj.pk, )))
发布于 2014-07-26 03:39:44
如果你不能访问request
,那么你就不能使用这里的一些解决方案中推荐的get_current_site(request)
。您可以使用原生站点框架和get_absolute_url
的组合。在管理中至少设置一个Site,确保您的模型具有get_absolute_url()方法,然后:
>>> from django.contrib.sites.models import Site
>>> domain = Site.objects.get_current().domain
>>> obj = MyModel.objects.get(id=3)
>>> path = obj.get_absolute_url()
>>> url = 'http://{domain}{path}'.format(domain=domain, path=path)
>>> print(url)
'http://example.com/mymodel/objects/3/'
https://docs.djangoproject.com/en/dev/ref/contrib/sites/#getting-the-current-domain-for-full-urls
https://stackoverflow.com/questions/2345708
复制相似问题