在创建用户对象时,有没有方法发送用户电子邮件?

2024-04-29 11:54:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在我所建立的系统中,用户不能自己注册。用户由系统管理员之一添加。所以没有用户注册窗体或视图。注册只在管理员完成,所以我猜发送邮件也必须在那里(或者我错了吗)?在

我需要发送一个自动电子邮件给用户时,他/她正在创建,只有那时(不是在每个保存模型)。在

有人能帮忙吗?有没有内置的东西?或者我该怎么做?在

我读过create\u用户管理器,但我认为有一种比编辑管理器更好的方法。在


Tags: 方法用户模型视图编辑管理器电子邮件系统
3条回答

您可以在用户模型的post_save信号上注册回调。大致如下:

# note: untested code

from django.db.models.signals import post_save
from django.contrib.auth.models import User

def email_new_user(sender, **kwargs):
    if kwargs["created"]:  # only for new users
        new_user = kwargs.["instance"]
        # send email to new_user.email ..

post_save.connect(email_new_user, sender=User)

注意if kwargs["created"]:条件,该条件检查这是否是新创建的用户实例。在

使用post_save signal,它有一个与信号一起发送的created参数。如果created为true,请发送电子邮件。在

编辑

肖恩·金击败了我。接受他的回答

您可以使用signals framework。用户对象上的保存后信号是合适的,请参见here中的类似示例。在

相关问题 更多 >