我正在使用 Django(1.3 版)并且忘记了管理员用户名和密码。如何重置两者?
是否可以将普通用户设置为管理员,然后删除管理员状态?
python manage.py createsuperuser 将创建另一个超级用户,您将能够登录到管理员并记住您的用户名。是的,为什么不。
要授予普通用户权限,请使用 python manage.py shell
打开 shell 并尝试:
from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
user.is_staff = True
您可以通过控制台尝试:
python manage.py shell
然后在shell中使用以下脚本
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)
将列出系统上的所有超级用户。如果您从列表中认出您的用户名:
usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
并且您设置了一个新密码(:
User.objects.filter(is_superuser=True)
pip install django-extensions
,将其添加到 installed apps
并运行 ./manage.py shell_plus
。 User
类将可用,您可以password-change
。
这是一个很好的问题。
python manage.py 更改密码用户名
例子 :-
python manage.py changepassword mickey
检索用户名和密码的最佳方法之一是查看和更新它们。用户模型提供了一种完美的方式来做到这一点。
在这种情况下,我使用的是 Django 1.9
导航到您的根目录,即使用您的控制台或其他应用程序(例如 Git)来查找“manage.py”文件所在的位置。使用命令“python manage.py shell”检索 Python shell。通过输入以下命令导入用户模型“from django.contrib.auth.models import User”通过输入以下命令获取所有用户“users = User.objects.all()”打印用户列表对于 Python 2用户使用命令“print users” 对于 Python 3 用户使用命令“print(users)” 第一个用户通常是管理员。选择您要更改密码的用户,例如“user = users[0]” 设置密码 user.set_password('name_of_the_new_password_for_user_selected') 保存新密码“user.save()”
启动服务器并使用用户名和更新的密码登录。
manage.py changepassword
的优点是您不受限制可以使用或不能使用的密码 - 不再类似于用户名废话。 (这是在我的开发环境中。我不提倡使用较弱的密码。您应该始终在产品中使用强密码。)
除了@JamesO 回答说使用
python manage.py changepassword [username]
如果您不记得您的用户名:
1-在项目的主目录中访问数据库(我使用的是 sqlite3):
sqlite3 db.sqlite3
2- 列出 auth_user
表的内容
SELECT * FROM auth_user ;
3-查找具有 is_superuser = 1
的用户,在我的情况下是管理员 screenshot of the command output (I don't have enough rep points)
新设置应该首先运行 python manage.py createsuperuser
来创建用户。似乎没有默认的用户名密码来登录管理员。
有两种方法可以做到这一点:
changepassword
管理命令:
(env) $ python manage.py changepassword <username>
或者(扩展了几个答案,但适用于任何扩展的用户模型)使用 django-admin shell 如下:
(env) $ python manage.py shell
这应该会打开 shell 命令提示符,如下所示:
Python 3.7.2 (default, Mar 27 2019, 08:44:46)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
然后你会想要以下内容:
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.get(username='admin@hug.com')
>>> user.set_password('new password')
>>> user.save()
>>> exit()
注意为什么我用这个答案回答了这个问题?
因为如前所述,User = get_user_model()
将适用于您自己的自定义 User
模型。使用 from django.contrib.auth.models import User
然后 User.objects.get(username='username')
可能会引发以下错误:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
你可以试试这个:
1.无控制台更改超级用户密码
python manage.py changepassword <username>
2.通过控制台修改超级用户密码
https://i.stack.imgur.com/I2BLt.png
python manage.py changepassword username
您可能还错误地回答了设置问题并且员工人数为零。在这种情况下,请前往 postgres:
obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id | 1
is_superuser | f
is_staff | f
...
要修复,请直接编辑:
update auth_user set is_staff='true' where id=1;
如果您忘记在 manage.py
上先使用 createsuperuser
命令创建管理员用户,请更改密码。
如果您忘记了管理员,那么您需要使用创建新用户
python manage.py createsuperuser <username>
对于密码,有 CLI 命令 changepassword
供 django 更改用户密码
python manage.py changepassword <username>
或者
django-admin changepassword <username>
或在 Django 环境中运行此代码
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
如果您不知道此处创建的用户名。您可以按照上面@FallenAngel 的描述获取用户。
python manage.py shell
from django.contrib.auth.models import User
usrs = User.objects.filter(is_superuser=True)
#identify the user
your_user = usrs.filter(username="yourusername")[0]
#youruser = usrs.get(username="yourusername")
#then set the password
但是,如果您创建了独立的用户模型。一个简单的情况是当您想使用电子邮件作为用户名而不是默认用户名时。在这种情况下,您的用户模型存在于诸如 your_accounts_app.models 之类的地方,那么上述解决方案将不起作用。在这种情况下,您可以改用 get_user_model 方法
from django.contrib.auth import get_user_model
super_users = get_user_model().objects.filter(is_superuser=True)
#proceed to get identify your user
# and set their user password
另一件值得注意的事情是将用户的状态 is_staff
设置为活动。至少,这就是它对我有用的原因。有关更多详细信息,我创建了另一个 superuser
,正如人们在上面解释的那样。然后我转到数据库表 auth_user
并搜索该用户名以确保其 is_staff
标志设置为 1
。这终于让我能够登录到 admin
站点。
使用命令“python manage.py createsuperuser”创建一个新的超级用户。以新的超级用户身份登录。点击“用户”链接。然后单击要删除的用户。单击表单页面末尾的删除用户。
注意 - 上述过程将更改该特定用户所做的活动日志。
只需在命令行中输入以下命令:
python manage.py changepassword yourusername
如果您使用自定义用户模型
(venv)your_prj $ ./manage.py shell
>>> from customusers.models import CustomUser
>>> CustomUser.objects.filter(is_superuser=True)
>>> user = CustomUser.objects.get(email="somesuper@sys.com")
>>> user.set_password('@NewPwd')
>>> user.save()
>>> exit()
最好的方法是去你的终端并输入
python manage.py createsuperuser
并再次插入另一个密码和用户名,但在大多数情况下,您将丢失您之前创建的一些个人资料。
利用
python manage.py 转储数据
然后看看最后你会发现用户名
我认为,更好的方式在命令行
python manage.py createsuperuser
如果在 /admin/ website
中需要 reset_password
链接,则可以这样做:https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-a-password-reset-feature
获取用户名(以及大部分信息)的另一种方法是直接访问数据库并从表中读取信息。
manage.py createsuperuser
创建第二个超级用户,然后查看用户列表以找到原始用户。然后以原始用户身份登录并删除新的超级用户。