我想在cron工作中发送邮件。该邮件应包含指向我的应用程序的链接。
在cron作业中,我没有请求对象,并且无法使用request.build_absolute_uri()。
AFAIK网站框架可以在这里提供帮助。但是没有给我协议(http vs https)吗?
我的应用程序是可重用的,有时托管在http上,有时托管在https站点上。
更新
我搜索一种常见的django方式。可以创建自定义设置,但是首选使用Django标准的解决方案。
此任务有一个特殊的标准模块-Sites Framework。它添加了站点模型,该模型描述了特定站点。该模型具有domain
用于项目域的字段,以及name
-网站的人类可读名称。
您将模型与站点相关联。像这样:
from django.db import models
from django.contrib.sites.models import Site
class Article(models.Model):
headline = models.CharField(max_length=200)
# ...
site = models.ForeignKey(Site, on_delete=models.CASCADE)
当您需要为对象创建URL时,可以使用类似以下代码的内容:
>>> from django.contrib.sites.models import Site
>>> obj = MyModel.objects.get(id=3)
>>> obj.get_absolute_url()
'/mymodel/objects/3/'
>>> Site.objects.get_current().domain
'example.com'
>>> 'https://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url())
'https://example.com/mymodel/objects/3/'
这样,您可以在多个域之间传播内容。即使您只有一个域,我还是建议您使用它来达到一种良好的标准舒适方式来保留域设置。
安装非常简单:
添加'django.contrib.sites'
到您的INSTALLED_APPS
设置。
定义一个SITE_ID设置:
SITE_ID = 1
运行迁移。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句