Django:管理界面:如何更改用户密码

Django: admin interface: how to change user password

在 Django 中:

我创建了一个超级用户,可以查看所有用户

我还为我的用户实现了忘记密码,他们可以输入他们的电子邮件,并且密码重置 link 会发送到他们的电子邮件,然后用户可以重置他的密码

但是管理员如何从管理仪表板更改某些用户的密码

在您的 admin.py 文件中,您可以像这样将 UserAdmin 注册到您的 User 模型:

from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
from django.contrib import admin
from <my-app> import models    

@admin.register(models.User)
class UserAdmin(DjangoUserAdmin):
    
    # extra logic:
    ...

Django 不会在用户模型上存储原始(明文)密码,而只会存储哈希值(有关完整详细信息,请参阅 documentation of how passwords are managed)。因此,不要试图直接操作用户的密码属性。这就是创建用户时使用辅助函数的原因。

要更改用户密码,您有多种选择:

manage.py changepassword *username* 提供了一种从命令行更改用户密码的方法。它会提示您更改给定用户的密码,您必须输入两次。如果两者匹配,新密码将立即更改。如果您不提供用户,该命令将尝试更改其用户名与当前系统用户匹配的密码。

您还可以使用 set_password():

以编程方式更改密码
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()

如果您安装了 Django 管理员,您还可以在 authentication system’s admin 页面上更改用户密码。 Django 还提供了可用于允许用户更改自己的密码的视图和表单。

更改用户密码将注销他们的所有会话。 See Session invalidation on password change 了解详情。

这个答案只是@kunal Sharma 回答的延伸

从 Django admin 更改用户密码

走进用户

然后点击这个表格,会出现下面的表格,在那里修改密码

我们可以通过在 admin.py 文件中添加 UserAdmin 从 Django 管理界面重置其他用户密码。使用 Django 3.1 作为示例。

admin.py

from django.contrib import admin
from .models.models import User
from django.contrib.auth.admin import UserAdmin

admin.site.register(User, UserAdmin)

然后我们就可以在Django管理界面的用户编辑页面看到下面的部分了。

通过单击 this form 我们可以转到重设密码表单。