如何在django中构建完整的URL

时间:2012-11-22 19:15:53

标签: django url satchmo

我需要让django发送一封包含这样的网址的电子邮件

http://www.mysite.org/history/

如何获得“历史”:

history_url = urlresolvers.reverse('satchmo_order_history')

history_url是我传递给发送电子邮件的函数的参数,它正确生成'/ history /'。但是我如何获得第一部分? (http://www.mysite.org)

修改1

这样做有什么不对或不可取的吗?

history = urlresolvers.reverse('satchmo_order_history')
domain = Site.objects.get_current().domain
history_url = 'http://' + domain + history

1 个答案:

答案 0 :(得分:3)

如果您有权访问HttpRequest个实例,则可以使用HttpRequest.build_absolute_uri(location)

absolute_uri = request.build_absolute_uri(relative_uri)

另外,您可以使用sites framework

来获取它
import urlparse
from django.contrib.sites.models import Site

domain = Site.objects.get_current().domain
absolute_uri = urlparse.urljoin('http://{}'.format(domain), relative_uri)

Re:Edit1

我倾向于使用urlparse.join,因为它在标准库中,它在技术上是组合URI的最Pythonic方式,但我认为你的方法也很好。