如何让用户在Django中更改自己的密码?
任何人都可以指定我的代码,用户可以在Django中更改自己的密码?
Django带有一个用户authentication系统。 它处理用户帐户,组,权限和基于cookie的用户会话。 本文档解释了事情的工作原理。
如何更改Django密码
请参阅更改密码部分
-
导航到
manage.py
文件所在的项目 -
$ python manage.py shell
-
键入下面的脚本:
从django.contrib.auth.models导入用户 u = User.objects.get(username__exact ='john') u.set_password('新密码') u.save()
您也可以使用简单的manage.py
命令:
manage.py changepassword *username*
只需input两次新密码。
从文档中更改密码部分。
如果您的INSTALLED_APPS
有django.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()"