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

标签 python django

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

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

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/

相关文章:

python - Django ORM 与 Postgres : rows unexpectedly deleted - Bug?

python - Django 模型字段如何与多个模型相关?

python - 如何在 Django 中更改发件人电子邮件名称

python - 在 matplotlib 中使颜色变暗或变亮

python - OpenCV (3.3.0) 在带有视频的 VideoCapture 上返回失败,但适用于网络摄像头 [OS X]

python - 在 Report Lab 中是否有获得 float div 的解决方法?

mysql - django - 自动创建 models.py 文件?

python - 从 Git 存储库安装 Python 包后,某些文件夹丢失

python - 我要在这段代码中添加什么才能使 'mylives' 下降(pygame)

Django-allauth 社交帐户 provider_login_url 的进程、范围和参数为 NULL