首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Django中获取完整/绝对URL (带域)?

如何在Django中获取完整/绝对URL (带域)?
EN

Stack Overflow用户
提问于 2010-02-27 08:29:00
回答 23查看 347.8K关注 0票数 447

如何在Django without the Sites module中获取完整/绝对网址(例如https://example.com/some/path)?这太傻了..。我应该不需要查询我的数据库来抓取URL!

我想在reverse()中使用它。

EN

回答 23

Stack Overflow用户

回答已采纳

发布于 2010-02-27 10:00:08

根据请求使用方便的request.build_absolute_uri()方法,将相关的url传递给它,它将为您提供完整的url。

默认情况下,将返回request.get_full_path()的绝对URL,但您可以将其作为第一个参数传递给相对URL,以将其转换为绝对URL。

票数 596
EN

Stack Overflow用户

发布于 2013-08-23 15:07:06

如果你想在reverse()中使用它,你可以这样做:request.build_absolute_uri(reverse('view_name', args=(obj.pk, )))

票数 123
EN

Stack Overflow用户

发布于 2014-07-26 03:39:44

如果你不能访问request,那么你就不能使用这里的一些解决方案中推荐的get_current_site(request)。您可以使用原生站点框架和get_absolute_url的组合。在管理中至少设置一个Site,确保您的模型具有get_absolute_url()方法,然后:

代码语言:javascript
复制
>>> 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

票数 72
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2345708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档