Django 1.6 base url(替代站点框架)?

时间:2013-11-12 10:28:55

标签: django

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

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

当然,你可以在settings.py文件中添加一个基本网址,但是有一种特定的Django方式来获取基本网址吗?

如果它在模板或视图中,您可以使用HttpRequest.build_absolute_uri(location),但是如果您使用Celery任务发送电子邮件,那么这不是那么简单(因为您没有HttpRequest对象的一个​​实例。

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

1 个答案:

答案 0 :(得分:0)

它可能不喜欢它(包括我自己在内的很多人使用你描述的网站框架),但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”,但它应该有用。

相关问题