python - (Djoser) 更新用户字段时出现奇怪的激活电子邮件
问题描述
每次我尝试使用PATCH方法将我的用户更新到/users/me/端点时,总是会发送一封激活电子邮件。用户已经在系统中处于活动状态......所以我不知道发生了什么。
SEND_ACTIVATION_EMAIL 是 True,但我知道电子邮件只会在以下情况下发送:创建帐户或更新他们的电子邮件(我不更新电子邮件)
DJOSER = {
....
'ACTIVATION_URL': 'auth/users/activation/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
....
}
解决方案
我有同样的问题。这是由于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)
推荐阅读
- python - 通过 Azure 笔记本从 blob 容器访问 csv 文件
- php - 关于为复杂页面存储/检索数据的问题
- amazon-rds - aws数据库服务与数据库引擎有什么区别
- sql - sql 多个 whereIn 性能
- ajax - ASP.NET MVC ViewBag 值在 Ajax 调用后未显示在视图中
- node.js - 在 PostgreSQL 上将数组绑定到 SELECT ... IN
- python - “不存在这样的文件或目录”,但显然确实存在
- r - DESeqDataSet(se, design = design, ignoreRank) 中的错误:计数矩阵应该是数字,目前它有模式:逻辑
- c++ - WTL 向动态创建的按钮添加工具提示
- logging - Solaris 10 Logadm 帮助和通配符说明