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

Hul*_*ulk 76 python django

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

Sve*_*lov 143

Django带有用户身份验证系统.它处理用户帐户,组,权限和基于cookie的用户会话.本文档解释了工作原理.

如何更改Django密码

请参阅更改密码部分

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

  2. $ python manage.py shell

  3. 键入以下脚本:

from django.contrib.auth.models import User
u = User.objects.get(username__exact='john')
u.set_password('new password')
u.save()

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

manage.py changepassword *username*

只需输入两次新密码即可.

来自文档中的更改密码部分.


如果你有django.contrib.admin你的INSTALLED_APPS,你可以访问:example.com/path-to-admin/password_change/这将有一个表格,以确认您的旧密码,然后输入两次新密码.

  • 我不认为这有助于为用户创建用于更改自己密码的页面 - 只需管理员即可. (13认同)

Ben*_*mes 25

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


Jus*_*ill 6

它不需要去shell输入passwd并重新输入passwd

 python manage.py changepassword <username> 
  or
/manage.py changepassword <username>
Run Code Online (Sandbox Code Playgroud)

使用外壳

python manage.py shell
from django.contrib.auth.models import User
users=User.objects.filter(email='<user_email>') 
  #you can user username or etc to get users query set
  #you can also use get method to get users
user=users[0]
user.set_password('__enter passwd__')
user.save()
exit()
Run Code Online (Sandbox Code Playgroud)


yam*_*yam 5

本教程展示了如何使用基于函数的视图来做到这一点:

查看文件:

from django.contrib import messages
from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, redirect

def change_password(request):
    if request.method == 'POST':
        form = PasswordChangeForm(request.user, request.POST)
        if form.is_valid():
            user = form.save()
            update_session_auth_hash(request, user)  # Important!
            messages.success(request, 'Your password was successfully updated!')
            return redirect('change_password')
        else:
            messages.error(request, 'Please correct the error below.')
    else:
        form = PasswordChangeForm(request.user)
    return render(request, 'accounts/change_password.html', {
        'form': form
    })
Run Code Online (Sandbox Code Playgroud)

网址文件:

from django.conf.urls import url
from myproject.accounts import views

urlpatterns = [
    url(r'^password/$', views.change_password, name='change_password'),
]
Run Code Online (Sandbox Code Playgroud)

最后,模板:

<form method="post">
  {% csrf_token %}
  {{ form }}
  <button type="submit">Save changes</button>
</form>
Run Code Online (Sandbox Code Playgroud)