我想在django rest框架中发送电子邮件,例如,当某人创建帐户或发表评论等时。我在django文档中发现了this。但是我不知道在哪里使用它。也许在Viewset中,但是在哪种方法中。
那么在Django Rest Framework中最好的方法是什么?在哪里发送电子邮件的最佳位置是什么?
答案 0 :(得分:1)
假设“创建帐户”和“评论”都创建了一些模型实例,则可以使用existing model signals。
如果您需要捕获尚未发送信号的事件,则必须从适当的位置define new signals and send them(这取决于您感兴趣的内容,因此不会出现“千篇一律”的情况,所有人的答案都在这里。)
如果一次发送的邮件不止一个,您可能要考虑使用一些异步任务队列发送电子邮件-这样可以避免延迟响应(Django信号不是异步的)。
答案 1 :(得分:1)
我想给你一些建议(当然有原因):
That是synchronous
。也许那不是所希望的/有效的。我建议您使用类似package (django-anymail
)的名称,这样可以使您的电子邮件发件人脱钩。假设现在您正在使用AWS SES,明天想切换到sendgrid,则只需更改此设置变量即可。
假设User
,Comment
都是独立的模型。我建议您重写这些模型的save()
方法并从那里发送电子邮件。我不建议使用signals
,因为我(完全出于个人观点)认为在无法访问源时(例如,第三方库中的某些事件等)将使用信号。
答案 2 :(得分:0)
您可以将发送函数注册到某些Django信号,也可以在基于类的视图或基于函数的视图中调用它。