在我的项目中,我有一个开放式注册表单,您可以在其中创建公司以及所有相关信息。
之后,您可以邀请其他人来帮助您管理公司的信息。为此,我的想法是,当记录的用户添加另一个管理员时,我将使用假密码手动创建用户并向创建的电子邮件发送重置密码请求,以便他可以创建自己的密码。重要的代码如下:
from django.contrib.auth.forms import PasswordResetForm
...
def create_admin(request):
if request.method == 'POST':
form = AdminForm(request.POST)
if form.is_valid():
email = form.cleaned_data.get("email")
random_pass = User.objects.make_random_password()
user = User(username=email, email=email, password=random_pass)
user.save()
company.add_admin(user)
reset_form = PasswordResetForm({'email': email})
reset_form.save(
email_template_name="rh/password_reset_email.html",
subject_template_name="rh/password_reset_subject.txt")
return redirect('dashboard')
else:
form = AdminForm()
return render(request, 'rh/create_admin.html', {'form': form})
不幸的是,上面的代码返回Exception Type: AttributeError 'PasswordResetForm' object has no attribute 'cleaned_data'
注意:
提前致谢
答案 0 :(得分:3)
在评论中进行一些对话后,我会留下回复。这两个问题是密码的创建方式和未验证的表单。这段代码应该有效:
email = form.cleaned_data.get("email")
random_pass = User.objects.make_random_password()
user = User(username=email, email=email)
user.set_password(random_pass)
user.save()
company.add_admin(user)
reset_form = PasswordResetForm({'email': email})
reset_form.is_valid()
reset_form.save(
email_template_name="rh/password_reset_email.html",
subject_template_name="rh/password_reset_subject.txt")
return redirect('dashboard')
(请注意,在此代码中我使用的是表单而不是视图,因为我不确定您使用的是什么。如果此代码无效,请更正。)