在django项目中对数据进行任何更新或更改时,有哪些方法可以向用户发送自动每周电子邮件通知?
答案 0 :(得分:3)
我将描述我所知道的最简单的解决方案。对于这个问题,还有许多更复杂的方法。
从根本上说,你需要三件事:
示例:django-kronos 提供了用于将函数注册为cron作业的装饰器(假设您的Web服务器是基于Linux的)。可以从命令行将这些作业作为部署过程的一部分进行安装:
./manage.py installtasks
要让kronos找到任务,它们必须位于您应用内的cron.py
个文件中。
# myapp/cron.py
import kronos
from django.contrib.auth.models import user
from myapp.services import check_for_changes, notify_user_of_change
# Register cron job to run once a week (every Sunday) at midnight
@kronos.register('0 0 * * 0')
def notify_about_changes():
"""Sets up a cron job and runs this service function once a day.
Installed With:
``./manage.py installtasks``
"""
all_my_users = User.objects.all()
for user in all_my_users:
changes = check_for_changes(user)
for change in changes:
notify_user_of_change(user, change)
请注意,将任务功能尽可能保持“精简”是一种很好的做法。在您的情况下,您(a)检查更改,然后(b)通知每个更改。这些可以是一个接受用户实例作为参数的函数,或者它们可以是模型方法。无论如何,努力工作应该在其他地方处理。
答案 1 :(得分:0)
这是一个非常广泛的问题,不幸的是,答案也将是广泛的。您正在寻找的常规工作流程可能从Signal开始,您可以将其设置为在更新数据时激活。
然后,该信号将存储有关更改的数据,然后使用许多不同的电子邮件选项之一来发送电子邮件。您可以使用内置Django emails,也可以使用第三方API,例如django-mailchimp。
希望这会让你朝着正确的方向前进。