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

时间:2011-07-05 13:13:59

标签: python django django-admin django-authentication

在我建立用户的系统中,不能自己注册。用户由其中一个系统管理员添加。因此没有用户注册表单或视图。注册只在管理员中进行,所以我猜send_mail也必须在那边(或者我错了)?

我需要在创建用户时向用户发送一封自动发送的电子邮件,然后才发送给用户(不是每次保存模型)。

任何人都可以帮忙吗?有内置的东西吗?或者我该怎么做?

我已经阅读了有关create_user用户管理器的信息,但我认为有一种更好的方法可以编辑管理器。

3 个答案:

答案 0 :(得分:5)

您可以在用户型号的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"]:条件,检查这是否是新创建的用户实例。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

使用post_save signal,其中包含created参数与信号一起发送。如果创建为真,请发送您的电子邮件。

修改

Shawn Chin打败了我。接受他的回答