Django 1.6基本url(站点框架的替代方案)?

Django 1.6基本url(站点框架的替代方案)?,django,Django,从Django发送电子邮件时,习惯上(至少对我来说)使用Site对象来获取基本url。 i、 e'http://{}{}.format(Site.objects.get_current(),reverse('my_view')) 然而,在Django 1.6中,站点框架在默认情况下没有启用,这让我想到,现在可能有一种不同的方法来实现这一点 当然,您可以在settings.py文件中添加一个基本url,但是有没有Django特定的方法来获取基本url 如果是在模板或视图中,您可以使用HttpReq

从Django发送电子邮件时,习惯上(至少对我来说)使用Site对象来获取基本url。 i、 e
'http://{}{}.format(Site.objects.get_current(),reverse('my_view'))

然而,在Django 1.6中,站点框架在默认情况下没有启用,这让我想到,现在可能有一种不同的方法来实现这一点

当然,您可以在settings.py文件中添加一个基本url,但是有没有Django特定的方法来获取基本url

如果是在模板或视图中,您可以使用
HttpRequest.build\u absolute\u uri(location)
,但是如果您使用芹菜任务发送电子邮件,那么这就不是那么简单了(因为您没有HttpRequest对象的实例)

因此,问题是: 对于构建用于电子邮件(或其他没有请求对象的区域)的绝对URL,获取主机的最简单方式是什么?

可能感觉不太像(包括我在内的许多人都使用您描述的站点框架),但Django网站框架的目的并非如此。从文档中可以看出:

如果您的单个Django安装支持多个站点,并且您需要以某种方式区分这些站点,请使用它

我相信这就是为什么它现在被默认禁用的原因

至于在电子邮件中获取主机,我要做的是将其存储在设置中:

# settings.py
SITE_HOST_NAME = 'example.com'

# email code
from django.conf import settings
SITE_HOST_NAME = getattr(settings, 'SITE_HOST_NAME', 'defaulthostname')
另外,这种方法不会影响数据库。我不确定它是否是“最具Djangonic的”,但它应该会起作用