我有同样的问题。这是由于djoser.views.UserViewSet.perform_update
方法。
def perform_update(self, serializer):
super().perform_update(serializer)
user = serializer.instance
#should we send activation email after update?
if settings.SEND_ACTIVATION_EMAIL:
context = {"user": user}
to = [get_user_email(user)]
settings.EMAIL.activation(self.request, context).send(to)
如您所见,即使您使用电子邮件作为登录字段,如果您更新任何字段,您也会不断收到电子邮件确认。这不是正确的做法。仅当电子邮件已更改时才应执行此操作。
在您的情况下,应省略更新部分:
#user = serializer.instance
#should we send activation email after update?
#if settings.SEND_ACTIVATION_EMAIL:
#context = {"user": user}
#to = [get_user_email(user)]
#settings.EMAIL.activation(self.request, context).send(to)