如何在Django创建用户时发送重置密码的邮件?



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

用户创建的视图,还包括一个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在创建一个新用户时,自动发送邮件请求重置密码?

为了在用户创建时发送电子邮件,您需要定义一个方法,像下面这样发送电子邮件:-

  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块中添加以上代码

在你的models.py:

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

最新更新