1

有没有办法使用 django 的内置密码重置功能,而无需通过电子邮件发送重置链接或没有电子邮件选项。我目前正在开发一个简单的系统,其中有几个用户不需要发送电子邮件。提前致谢

4

3 回答 3

5

django.contrib.auth中有一些选项允许您更改密码而无需发送电子邮件:

  • PasswordChangeForm:一种允许用户通过输入旧密码来更改密码的表单。
  • SetPasswordForm:一种允许用户更改设置密码而无需输入旧密码的表单

您可以在视图中实施其中之一来更改用户密码。

于 2017-12-11T11:55:40.863 回答
2

您可以使用表单更改密码,并在 views.py 中使用该功能

make_password()

if passwordForm.is_valid():
                password = passwordForm.cleaned_data['password']
                request.user.password = make_password(password)
                request.user.save()

[make_password][1] https://docs.djangoproject.com/en/1.11/topics/auth/passwords/

于 2017-08-29T07:39:50.930 回答
-1

我不熟悉 django,但在通过密码重置为任何用户(甚至是初始管理员)获得访问权限之前,我曾在其他应用程序上工作过。在所有这些情况下,工作方法都是相似的——重置链接是由一些 URL 存根加上在某个数据库表中某处找到的唯一键形成的。手动组装链接并使用它效果很好,尽管一个系统使用 emailsentdate 列并且拒绝做任何事情,除非它被填充,所以如果你没有通过简单的方法获得成功,请检查类似的东西

如果您绝对必须拥有一个电子邮件服务器,那么确实存在用于开发人员使用的简单服务器,例如 smtpdev,它们的行为就像一个 smtp 服务器来欺骗需要它的应用程序,但它们不会将电子邮件发送到任何地方,它们只是显示他们。用于调试,但如果 django 坚持要配置一个看起来像真实邮件服务器的服务器,可能会对您有所帮助

于 2017-08-29T06:26:33.170 回答