我想在 POST 成功完成后发送电子邮件。电子邮件通过信号来完成似乎是有道理的。我可以自己编写,如下所示:https://docs.djangoproject.com/en/1.6/topics/signals/#defining-and-sending-signals
但是,我不明白的是:
- Django Rest Framework 支持信号吗(为什么不支持,它只是 Django)
- 我要听什么来发送自定义信号?发件人是什么?
欢迎提出建议。
另外,有人用 Angular 这样做吗?有没有一种我没有看到的简单方法可以做到这一点?
最佳答案
旧版本 Django 的老问题,但如果有人遇到它......没有必要使用信号。 Django 现在有内置函数 send_mail
。这是文档:
https://docs.djangoproject.com/en/1.8/topics/email/
因此,您将使用该函数来创建和发送电子邮件。它甚至可以接受 HTML 模板作为消息参数并用 Django 数据填充它,这很好。
因此,您需要定义一个包含此方法的函数,例如:
def email_client(request):
id = request.POST.get('id')
client = Client.objects.get(id=id)
msg_html = render_to_string('templates/email.html', {'client': client})
template_email_text = ''
return send_mail('Lelander work samples', template_email_text, 'test@emailsender.com', ['test@emailrecipient.com'], html_message=msg_html, fail_silently=False)
并将该函数包含在 post
中的 DRF API View 中:
class ClientList(generics.ListCreateAPIView):
queryset = Client.objects.all()
serializer_class = ClientSerializer
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
email_client(request)
return self.create(request, *args, **kwargs)
关于django - 使用 Django Rest Framework 和 Angular 从 API 端点发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25212943/