han*_*ros 1 django url satchmo
我需要让 django 发送一封包含这样的 URL 的电子邮件
http://www.mysite.org/history/
Run Code Online (Sandbox Code Playgroud)
像这样获得“历史”的地方:
history_url = urlresolvers.reverse('satchmo_order_history')
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果您有权访问HttpRequest实例,则可以使用HttpRequest.build_absolute_uri(location):
absolute_uri = request.build_absolute_uri(relative_uri)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用网站框架获取它:
import urlparse
from django.contrib.sites.models import Site
domain = Site.objects.get_current().domain
absolute_uri = urlparse.urljoin('http://{}'.format(domain), relative_uri)
Run Code Online (Sandbox Code Playgroud)
回复:编辑1
我倾向于使用urlparse.join,因为它在标准库中,并且从技术上讲它是组合 URI 的最 Pythonic 方式,但我认为您的方法也很好。
| 归档时间: |
|
| 查看次数: |
1797 次 |
| 最近记录: |