在Django中创建用户并发送密码重置

抱歉,如果已经有一个实质性的答案,我已经搜索了很长时间,找不到任何有用的答案。

我有一个django项目,具有不同级别的帐户访问权限。我有一组“经理”,我想允许他们管理用户帐户。

我希望经理能够为用户创建用户帐户对象。但是,我不希望他们不得不创建密码并将其发送给用户(出于明显的原因)。这样,管理员可以模拟用户代表他们完成工作,并且用户可以维护密码控制和数据所有权。

想法是由管理员创建帐户,并在创建帐户时向用户发送密码重设表单(与django的即用型身份验证相同),该表单将允许他们设置密码。

我的代码类似于以下内容(省略了非命令性的内容)

from django.contrib.auth.models import User
from django.contrib.auth.forms import PasswordResetForm

@manager_required
def manager_add_users(request):
    add_user_form = manager_add_user_form(request.POST)
    new_user_name = add_user_form.cleaned_data['user_name']
    new_user_email = add_user_form.cleaned_data['user_email']

    new_user = User.objects.create_user(
        username = new_user_name, 
        email = new_user_email, 
        )
    new_user.save()

    set_password_form = PasswordResetForm({'email': new_user.email })
            if set_password_form.is_valid():
                print 'Reset Form Is Valid'
                set_password_form.save(
                    request= request,
                    use_https=True,
                    from_email="[email protected]",
                    email_template_name='registration/password_reset_email.html')

该帐户可以正确创建,并且一切运行都没有错误。问题是,尽管该表单有效(重置表单是有效的语句打印),但它实际上并未发送重置表单。没有表格错误。

但是,在测试中,当我使用系统中已经存在的地址初始化表单时,如下所示:

set_password_form = PasswordResetForm({'email':'[email protected]'})

密码重置表格发送无误。因此,它仅适用于系统中现有的用户电子邮件地址,但是尽管已经创建了用户并调用了.save()方法,但仍无法捕获该用户(用户在创建时被标记为“活动”,因此应该能够找到)

我有点茫然。我可以想到一些解决该问题的方法,但是这似乎是解决问题的最直接方法,而且我真的不完全确定为什么它不起作用。

是的,我能够发送消息。我正在使用django的后端邮件进行测试:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
凯文·克里斯托弗·亨利

看一下源代码,看起来Django忽略了该请求,因为密码为空。

django.utils.crypto.get_random_string()在保存用户之前,请尝试设置一个临时密码(例如使用)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从旧的asp.net成员身份创建用户到新的MVC .net并发送密码重置

在Django中重置密码后向用户发送电子邮件

在Django中重置密码

NodeJS和ExpressJS中的多用户密码重置并发问题

在Django中重置密码后对用户进行身份验证

使用数据创建重置密码链接并发送到电子邮件 ASP.NET Core Web-API

可恢复设计-为用户创建一个视图以发送重置密码电子邮件

在Django 1.6中重置密码

重置用户 django rest auth 的密码

使用数据库用户提供程序时如何在Laravel中创建密码重置方法

设置发送给用户的重置密码邮件的主题

流星重置密码不会发送电子邮件给用户以重置密码

在Django中创建用户时如何生成一次性密码并将其发送给用户的邮件ID?

单击django重置密码链接时,如何从登录表单中获取用户名

NoReverseMatch-在Django中重置密码

如何从自定义Django视图发送密码重置邮件?

如何在 Django 上发送重置密码电子邮件?

Yodlee用户密码重置

使用devise在Rails 3中发送密码重置指令后,如何将用户重定向到登录页面

AWS Cognito Admin创建的用户临时密码验证并重置

如何创建Firebase云功能以重置用户密码

使用Django的密码重置通知用户电子邮件无效

Django:从“重置密码”页面重定向登录的用户

在使用“忘记密码”发送密码重置电子邮件之前,检查用户是否已激活

使用明文密码创建的Django用户

从shell创建用户时的django哈希密码

nginx服务器上Django中的密码重置写入日志文件,而不是发送电子邮件

无法为Django的重置密码流程创建集成测试

从服务器 1 创建邀请并发送给服务器 2 中的用户 DMS