我希望能够让管理员创建用户帐户,然后,而不是为用户设置密码,用户将自动收到重置密码的电子邮件。
用户创建的视图,还包括一个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在创建一个新用户时,自动发送邮件请求重置密码?
为了在用户创建时发送电子邮件,您需要定义一个方法,像下面这样发送电子邮件:-
-
创建一个文本文件名,如'email_content.txt'
请为您的配置文件{{username}}重置密码
点击这里 -
更新
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)