django - 使用 Django Rest Framework 和 Angular 从 API 端点发送电子邮件

标签 django angularjs django-rest-framework django-signals

我想在 POST 成功完成后发送电子邮件。电子邮件通过信号来完成似乎是有道理的。我可以自己编写,如下所示:https://docs.djangoproject.com/en/1.6/topics/signals/#defining-and-sending-signals

但是,我不明白的是:

  1. Django Rest Framework 支持信号吗(为什么不支持,它只是 Django)
  2. 我要听什么来发送自定义信号?发件人是什么?

欢迎提出建议。

另外,有人用 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/

相关文章:

django - 在 django admin 中显示对象完整更改表单的链接

javascript - Angular UI Router 仅加载第一个声明的子状态

mysql - Angularjs http.get 方法在某些 Mac 上失败

具有 Django REST 框架的本地和 mod_wsgi 服务器之间的 Django JWT 身份验证行为不同

python - 如何检查列表中的当前用户是否投票了某个帖子

python - Django重复数据库查询

django - 安装 Django 调试工具栏的困难

javascript - Angular如何防止FOUC

python - StringRelatedField 不起作用,如官方教程所示

python - DjangoRestFramework 未验证要求 = True