如何让用户在Django中更改自己的密码?

任何人都可以指定我的代码,用户可以在Django中更改自己的密码?

Django带有一个用户authentication系统。 它处理用户帐户,组,权限和基于cookie的用户会话。 本文档解释了事情的工作原理。

如何更改Django密码

请参阅更改密码部分

  1. 导航到manage.py文件所在的项目

  2. $ python manage.py shell

  3. 键入下面的脚本:

从django.contrib.auth.models导入用户
 u = User.objects.get(username__exact ='john')
 u.set_password('新密码')
 u.save()

您也可以使用简单的manage.py命令:

manage.py changepassword *username*

只需input两次新密码。

从文档中更改密码部分。


如果您的INSTALLED_APPSdjango.contrib.admin ,则可以访问: example.com/path-to-admin/password_change/ ,其中将有一个表单确认您的旧密码并input新密码两次。

你也可以在你的URLconf中使用django.contrib.auth.views.password_change视图。 它使用默认的表单和模板; 提供您自己的是可选的。

urls.py

 urlpatterns = [ url(r'^accounts/', include('django.contrib.auth.urls')), 

模板:

 <a href="{% url 'password_change' %}">{% trans "Change password" %}</a> 

logging在: https : //docs.djangoproject.com/en/1.9/topics/auth/default/#using-the-views

非常类似于@ Ciro的答案,但更具体到原始问题(不添加所有的身份validation视图):

只需添加到urls.py urlpatterns

 url('^change-password/$', auth_views.password_change, {'post_change_redirect': 'next_page'}, name='password_change'), 

请注意, post_change_redirect指定密码更改后要redirect的url。

然后,只需添加到您的模板:

 <a href="{% url 'password_change' %}">Change Password</a> 

一旦按照Ciro Santilli的回答添加了url模式,允许用户更改密码的一种快捷方式是为pipe理员function提供“员工访问”权限。 如果您不将其添加到任何组或给予他们特殊的权限,他们仍然可以通过访问example.com/admin页面来更改其密码。 工作人员访问让他们即使是空白的页面, 在右上angular可以点击“更改密码”并使用pipe理function。

这是我使用的命令,以防万一你在抛出AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'问题AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User' AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'

 python manage.py shell -c "from django.contrib.auth import get_user_model; User = get_user_model(); u = User.objects.get(username='admin'); u.set_password('password123'); u.save()"