我需要让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
答案 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方式,但我认为你的方法也很好。