每周向用户发送有关数据更改的电子邮件通知
Send Weekly Email Notifications to Users regarding any changes in data
在 django 项目中数据有任何更新或更改时,每周自动向用户发送电子邮件通知的方法有哪些?
这是一个非常宽泛的问题,因此不幸的是答案也会很宽泛。您正在寻找的一般工作流程可能以 Signal 开始,您可以将其设置为在数据更新时激活。
然后该信号将存储有关更改的数据,然后使用许多不同的电子邮件选项之一发送电子邮件。您可以使用内置的 Django emails, or use a 3rd party API such as django-mailchimp.
希望这能让你朝着正确的方向前进。
我将描述我所知道的最简单的解决方案。对于这个问题还有很多很多更复杂的方法。
从根本上说,您需要三样东西:
- 任务运行器(我建议使用 django-kronos 配置 cron 作业)
- 一个 SMTP 提供商(我推荐 Mailgun,它是 super simple to set up with Django 并为您提供一些开箱即用的测试学分).
- 电子邮件模板(自己编写并使用 Django 呈现为字符串——Mailgun 在其博客上也有一些不错的开源模板)
示例: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)
请注意,最好让您的任务功能尽可能保持 "thin"。在您的情况下,您 (a) 检查更改,然后 (b) 通知每个更改。这些都可以是接受用户实例作为参数的函数,或者它们可以是模型方法。无论如何,辛苦的工作应该在别处处理。
在 django 项目中数据有任何更新或更改时,每周自动向用户发送电子邮件通知的方法有哪些?
这是一个非常宽泛的问题,因此不幸的是答案也会很宽泛。您正在寻找的一般工作流程可能以 Signal 开始,您可以将其设置为在数据更新时激活。
然后该信号将存储有关更改的数据,然后使用许多不同的电子邮件选项之一发送电子邮件。您可以使用内置的 Django emails, or use a 3rd party API such as django-mailchimp.
希望这能让你朝着正确的方向前进。
我将描述我所知道的最简单的解决方案。对于这个问题还有很多很多更复杂的方法。
从根本上说,您需要三样东西:
- 任务运行器(我建议使用 django-kronos 配置 cron 作业)
- 一个 SMTP 提供商(我推荐 Mailgun,它是 super simple to set up with Django 并为您提供一些开箱即用的测试学分).
- 电子邮件模板(自己编写并使用 Django 呈现为字符串——Mailgun 在其博客上也有一些不错的开源模板)
示例: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)
请注意,最好让您的任务功能尽可能保持 "thin"。在您的情况下,您 (a) 检查更改,然后 (b) 通知每个更改。这些都可以是接受用户实例作为参数的函数,或者它们可以是模型方法。无论如何,辛苦的工作应该在别处处理。