用户对象创建时如何发送邮件给用户?
我正在搭建的系统中,用户不能自己注册。用户是由系统管理员添加的。所以没有用户注册的表单或页面。注册只在管理员那进行,所以我想发送邮件的功能也应该在管理员那里(我这样想对吗)?
我需要在用户被创建时自动发送一封邮件给他/她,而不是在每次保存模型的时候都发送。
有没有人能帮我解决这个问题?有没有什么内置的功能可以做到这一点?或者我该怎么做呢?
我看过关于create_user用户管理器的内容,但我觉得还有比编辑管理器更好的方法。
3 个回答
2
6
你可以在用户模型的 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"]:
条件,它是用来检查这个用户实例是否是新创建的。