有没有办法使用Django的默认密码重置,而不通过电子邮件发送重置链接?

问题描述:

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

您可以用表格修改密码,并在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/

+1

谢谢,已经找到你说的解决方案。我将你的建议标记为答案。 – Jishnu

我对django不熟悉,但是我曾在其他应用程序上工作,用户,甚至是最初的管理员,通过密码重置。在所有这些情况下,工作方法都是相似的 - 重置链接由某个URL存根加上在某个数据库表中找到的唯一关键字组成。手动组装链接并使用它可以很好地工作,尽管一个系统使用了emailsentdate列,并且除非它被填充,否则拒绝做任何事情,因此如果通过简单的方法没有成功,请检查任何类似的东西。

If你绝对必须有一个电子邮件服务器,确实存在简单的用于开发像smtpdev使用,他们的行为就像一个smtp服务器愚弄需要一个应用程序,但他们不会发送电子邮件到任何地方,他们只是显示他们。用于调试,但如果Django的一个配置,看起来像一个真正的邮件服务器的坚持可能会帮助你

有在一些选项,允许您更改密码,而无需发送电子邮件:

  • PasswordChangeForm:一种让用户通过输入旧密码来更改密码的表单。
  • SetPasswordForm:一种形式,它允许用户更改,而无需输入旧密码

可以实现其中之一在视图中更改用户密码设置自己的密码。