【问题标题】:How to send a reset password email in Django on User creation?如何在用户创建时在 Django 中发送重置密码电子邮件?
【发布时间】:2021-10-13 01:05:52
【问题描述】:

我希望能够让管理员创建用户帐户,然后,用户将自动收到重置密码电子邮件,而不是为用户设置密码。

用户创建的视图,其中还包括一个Member 模型,如下所示:

def newmember(request):

    if request.method == 'POST':
        nu_form = NewUser(request.POST)
        nm_form = NewMember(request.POST)
    
        if nu_form.is_valid() and nm_form.is_valid():
            nusave = nu_form.save()
            nmsave = nm_form.save(commit = False)
            nmsave.user = nusave
            nmsave.save()
            return redirect(members)
        else:
            print(nu_form.errors)
            print(nm_form.errors)
    
    else:

        nu_form = NewUser()
        nm_form = NewMember()

    context = {
        'nu_form': nu_form, 
        'nm_form': nm_form}
    
    return render(request, 'web/newmember.html', context)

如何在创建新用户时让 Django 自动向该新用户发送电子邮件请求重置密码?

【问题讨论】:

  • 您是否有电子邮件服务器或使用可以发送电子邮件的电子邮件服务(例如 sendgrid、mailgun)?
  • @DominikViererbe 我将使用 Google Workspace,因为每月发送的电子邮件数量不会超过 50 封。
  • 我找到了一个解决你问题的教程:muhfathurh.medium.com/…我希望它有帮助:)
  • 这是一个关于如何在 Django 中将 Gmail 设置为电子邮件服务的教程,我已经完成了。我需要知道是否可以在创建用户时触发重置密码电子邮件。

标签: python django


【解决方案1】:

为了发送关于用户创建的电子邮件,您需要定义一个发送电子邮件的方法,如下所示:-

  1. 创建一个文本文件名,例如“email_content.txt”

    请为您的个人资料 {{username}} 重置密码

    点击这里
  2. 更新newmember 方法并将以下代码添加到其中:-

             template = get_template('email_content.txt')
             context = {"usename": nmsave.user.username}
             content = template.render(context)
    
             email = EmailMessage(
                 "Congratulation, please reset your account password", content, 'App Name' <sender_email>
             )
             email.content_subtype = "html"
             email.send()
    

try catch块中添加上述代码

【讨论】:

    【解决方案2】:

    在你的 models.py 中:

    def save(self, *args, **kwargs):
        send_mail('subject', 'message', 'your email', 'user email')
        return super().save(*args, **kwargs)
    

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2015-04-24
      • 2021-03-08
      • 2021-08-05
      • 2020-09-26
      • 2013-12-18
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多