首页 > 解决方案 > 在 DRF 中发送激活电子邮件时处理错误

问题描述

我写了一个 APIView,用户可以在我的网站上注册一个新帐户。当用户成功创建帐户后,我会向他们发送一封经过验证的电子邮件。代码如下

def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)

        user = CustomUser.objects.get(email=serializer.data.get('email'))

        token = RefreshToken.for_user(user).access_token
        current_site = get_current_site(request).domain
        relativeLink = reverse('verify-email')

        absurl = 'http://' + current_site + \
            relativeLink + '?token=' + str(token)

        email_body = 'Hi ' + user.fullname + \
            ' Use link below to verify your email \n' + absurl
        data = {
            'to_email': user.email,
            'email_body': email_body,
            'email_subject': '[GetTheDeal] Verify your email'
        }

        send_email(data)

        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

但如果send_email()失败了。在我的情况下,因为我为我的谷歌帐户使用 2 因素身份验证。在那种情况下,我该怎么办?因为如果我不这样做,我会收到一个错误,但帐户创建成功,这对我来说没有意义。

这是send_email()功能

def send_email(data):
    email = EmailMessage(to=[data['to_email']],
                         subject=data['email_subject'], body=data['email_body'])
    email.send()

标签: djangodjango-rest-framework

解决方案


推荐阅读