在Django中:
我创建了一个超级用户并可以查看所有用户
我还为我的用户实现了忘记密码功能,他们可以输入电子邮件地址,然后会向其发送密码重置链接,之后用户可以重置密码
但是管理员如何能够从管理面板更改某些用户的密码呢?
在Django中:
我创建了一个超级用户并可以查看所有用户
我还为我的用户实现了忘记密码功能,他们可以输入电子邮件地址,然后会向其发送密码重置链接,之后用户可以重置密码
但是管理员如何能够从管理面板更改某些用户的密码呢?
Django不会在用户模型中存储原始(明文)密码,而只会存储哈希值(有关密码管理方式的完整详细信息,请参见文档)。因此,请勿尝试直接操作用户的密码属性。这就是为什么在创建用户时要使用帮助函数的原因。
要更改用户密码,您有几种选择:
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管理界面,您也可以在认证系统管理页面上更改用户密码。 Django还提供了视图和表单,可用于允许用户更改自己的密码。
更改用户密码将注销其所有会话。 详细信息请参见更改密码时会话失效。UserAdmin
。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:
...
在CMD中运行这些命令,然后更改任何用户密码:
python manage.py shell
from django.contrib.auth.models import
u=User.objects.get(username="user.name")
u
u.set_password("mynewpasssword")
u.save
from django.contrib.auth.models import User
。 - juanbits