我想在 cron 作业中发送邮件。邮件应包含
我的应用程序的链接。
在 cron 作业中,我没有请求对象,并且无法使用 request.build_absolute_uri()。
据我所知,网站框架可以在这里提供帮助。但没有给我协议(http vs https)?
我的应用程序是可重用的,有时托管在 http 网站上,有时托管在 https 网站上。
Update
我搜索了一种常见的 django 方式。可以创建自定义设置,但首选采用 django 标准的解决方案。
TL;DR: 没有任何“标准”“Django-ish”方法可以做到这一点,但框架提倡的 DRY 原则假设单个配置存储,因此自定义设置似乎是一个不错的方法。
默认情况下,Django 可以从单个实例提供任意数量的域,并且 HTTP 请求(更准确地说,它的HTTP_HOST
header) 是 Django 用来确定当前主机的唯一东西。
由于您的 cron 作业显然不在 HTTP 周期之外,因此您应该将您的域存储在设置中的某个位置...
# settings.py
DEFAULT_DOMAIN = 'https://foobar.com'
# or, depending on your configuration:
DEFAULT_DOMAIN = 'https://{}'.format(ALLOWED_HOSTS[0])
...使用微型上下文处理器可以更轻松地处理模板:
# yourapp/context_processors.py
from django.conf import settings
def default_domain(request):
return {'default_domain': settings.DEFAULT_DOMAIN}
...然后在您的电子邮件中使用它:
# yourapp/templates/email/body.html
<a href="{{ default_domain }}{% url 'target' %}">Click here</a>
或者,您可以使用sites
框架,但如果您服务于单个域,那么基于设置的解决方案对我来说似乎更加简单和干净。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)