gpt4 book ai didi

python - 强制重置手动创建的用户密码

转载 作者:行者123 更新时间:2023-11-30 22:35:25 24 4
gpt4 key购买 nike

在我的项目中,我有一个开放的注册表单,您可以在其中创建您的公司及其下面的所有信息。

之后您可以邀请其他人帮助您管理公司信息。为此,我的想法是,当登录用户添加另一个管理员时,我将使用虚假密码手动创建用户,并向创建的电子邮件发送重置密码请求,以便他可以创建自己的密码。重要代码如下:

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'

注意:

  1. 我已经有了一个完全可用的重置密码功能,使用了 django 和自定义模板中的所有内容。这就是为什么我试图以这种方式进行这项工作
  2. 我想自定义 email_template_name 和 subject_template_name,就像在我的代码中一样

提前致谢

最佳答案

在评论中进行一些对话后,我将留下回复。两个问题是创建密码的方式和未验证表单。此代码应该有效:

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')

(请注意,在此代码中我使用了表单而不是 View ,因为我不确定您用它做了什么。如果此代码不起作用,请更正它。)

关于python - 强制重置手动创建的用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44577349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com