【问题标题】:Sending emails when a user is activated in the Django admin在 Django 管理员中激活用户时发送电子邮件
【发布时间】:2010-08-09 15:46:55
【问题描述】:

我即将创建一个网站,它会监控注册,因为只有特定的人才能注册。毫无疑问,尽管我在注册表上方写了任何文字,但仍有一些不合适的人会注册,所以我们要适度。

注册后将创建django.contrib.authUser 和个人资料,并向版主发送一封电子邮件。版主将登录 Django 管理站点,检查他们是否被允许注册并将其帐户标记为活动的。如果他们是一些试图溜进来的恶棍,该帐户将被删除。

我将使用 recaptcha 来尝试阻止自动尝试。

我想在帐户被激活或删除时发送一封电子邮件,让帐户持有人知道他们的帐户发生了什么事,他们可以登录,或者让他们知道我们知道他们在做什么他们应该停止愚蠢。

我怀疑这与信号有关,但坦率地说,鉴于我使用的是 django.contrib.auth 提供的预制模型,我不知道这实际上适合哪里。

任何提示、线索或代码都将被亲切地接受。

【问题讨论】:

    标签: django django-signals django-authentication


    【解决方案1】:
    from django.db.models.signals import post_save
    from django.contrib.auth.models import User
    
    def send_user_email(sender, instance=None, **kwargs):
        if kwargs['created']:
            #your code here
    post_save.connect(send_user_email, sender=User)
    

    这样的事情应该可以工作。 Here 是文档。

    【讨论】:

    • post_save 不起作用,因为他无法判断用户是否处于活动状态。他想知道用户何时被激活,而不是被创建。
    【解决方案2】:

    你想看看Signals

    • 激活帐户后,您应该使用pre_save。您可以将当前用户与数据库中的现有实例进行比较:检查实例是否存在,检查前一个是否处于活动状态=False,检查新用户是否处于活动状态=True,然后send an email
    • 删除帐户后,请使用pre_delete。如果您使用 post_delete,您将无法访问该电子邮件。

    【讨论】:

    • 谢谢,但你能分享代码让事情更清楚吗?
    猜你喜欢
    • 2011-01-02
    • 2011-02-23
    • 2010-11-27
    • 2016-03-26
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2014-04-21
    相关资源
    最近更新 更多