在 django-rest-framework 中发送电子邮件的最佳位置在哪里?



我想在django rest框架中发送电子邮件,例如当有人创建一个帐户,或评论某些内容等时。我在django文档中找到了这个。但我不知道在哪里使用它。也许在视图集中,但以哪种方法。

那么在 Django Rest Framework 中发送电子邮件的最佳方式是什么,在哪里是最好的地方呢?

我想给你几个建议(当然,有原因(:

  1. 那是synchronous.也许这是不可取的/有效的。我建议您使用类似此软件包(django-anymail(的东西,这将分离您的电子邮件发件人。假设现在您使用的是 AWS SES,明天您想切换到 sendgrid,那么您只需要更改设置变量即可。

  2. 假设UserComment每个模型都是独立的模型。我建议您覆盖这些模型的save()方法并从那里发送电子邮件。我不建议signals因为我觉得(完全个人观点(当无法访问源时将使用信号,例如第三方库中的某些事件等。

假设"创建帐户"和"评论某事"都创建了某个模型实例,则可以使用现有的模型信号。

如果您需要捕获尚未发送信号的事件,则必须定义新信号并从适当的位置发送它们(这取决于您对什么感兴趣,因此这里没有"一刀切"的答案(。

此外,如果你一次要发送多封邮件,你可能要考虑使用一些异步任务队列来发送电子邮件 - 这样可以避免延迟响应(django 信号不是异步的(。

你可以将发送函数注册到一些 django 信号,或者你可以在基于类的视图或基于函数的视图中调用它。

最新更新