django - 在 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()
解决方案
推荐阅读
- python - 如何将两个熊猫列混合到一个数据框中,第一列的第一个元素,第二列的第二个元素等等?
- java - SpringBoot: Attach json on POST request with params
- sql-server - sql中的当前行+上一行
- python - 如何修复 Visual Studio 代码中的 DLL 加载失败?
- python - 在 Bokeh 中绘制烛台和体积烛台
- codemagic - CodeMagic 没有 Mac 自动代码签名错误
- postgresql - PostgreSQL:在 UPSERT 上的唯一性约束之前检查约束验证
- sql - 计算同一行中的每月和十二个最后日期
- flutter - 在 Flutter 中取消 PositionStream
- php - 点击发送短信 API Laravel