问题描述
|
我正在使用Django(1.3版),并且忘记了管理员用户名和密码。如何重置两者?
是否可以使普通用户成为管理员,然后删除管理员状态?
解决方法
python manage.py changepassword <user_name>
查看文件
,
python manage.py createsuperuser
将创建另一个超级用户,您将能够登录admin并修改您的用户名。
是的,为什么不。
要赋予普通用户特权,请打开带有python manage.py shell
的shell并尝试:
from django.contrib.auth.models import User
user = User.objects.get(username=\'normaluser\')
user.is_superuser = True
user.save()
, 您可以尝试通过控制台:
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()
然后您设置了一个新密码(:
, 您可以使用createsuperuser
命令创建一个新的超级用户。
, 这是一个很好的问题。
python manage.py changepassword user_name
例子:-
python manage.py changepassword mickey
, 新设置应首先运行ѭ1来创建用户。似乎没有默认的用户名密码可以登录admin。
, 检索用户名和密码的最佳方法之一是查看和更新它们。用户模型提供了一种完美的方法。
在这种情况下,我使用的是Django 1.9
导航到您的根目录,即使用控制台或其他应用程序(如Git)将\ manage.py \文件所在的位置。
使用命令“ python manage.py shell \”检索Python shell。
通过键入以下命令导入用户模型
\“从django.contrib.auth.models导入用户\”
通过键入以下命令来获取所有用户
\“用户= 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()\"
启动服务器并使用用户名和更新的密码登录。
, 您可能还回答了设置问题,并且职员人数为零。在这种情况下,请前往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;
, 您可以尝试以下方法:
1.无需控制台即可更改超级用户密码
python manage.py changepassword <username>
2.通过控制台更改超级用户密码
, 如果忘记了创建管理员用户,请先在manage.py
上使用createsuperuser
命令构建一个,然后更改密码。
, 如果您不知道此处创建的用户名。您可以按照上面@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
, 值得注意的另一件事是将用户的状态“ 20”设置为活动状态。至少,这就是它对我有用的原因。更详细地讲,如上所述,我又创建了一个“ 21”。然后,我进入数据库表auth_user
,并搜索该用户名,以确保其is_staff
标志设置为1
。最终,我登录了admin
网站。
, 使用命令“ python manage.py createsuperuser \”创建一个新的超级用户。
以新的超级用户身份登录。点击“用户”链接。然后单击您要删除的用户。单击表单页面末尾的删除用户。
注意-上述过程将更改由该特定用户完成的活动日志。
, 如果您忘记了管理员,则需要使用创建新用户
python manage.py createsuperuser <username>
对于密码,有CLI命令changepassword
django更改用户密码
python manage.py changepassword <username>
要么
django-admin changepassword <username>
或在Django env中运行此代码
from django.contrib.auth.models import User
u = User.objects.get(username=\'john\')
u.set_password(\'new password\')
u.save()
, 有两种方法可以做到这一点:
changepassword
管理命令:
(env) $ python manage.py changepassword <username>
或者使用django-admin外壳程序(扩展了一些答案,但适用于任何扩展的用户模型),如下所示:
(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()
N.B.为什么我用这个答案回答了这个问题?
如上所述,因为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\'
, python manage.py changepassword用户名
, 采用
python manage.py dumpdata
然后看最后你会发现用户名
,最好的方法是直接在终端上输入
python manage.py createsuperuser
然后再次输入另一个密码和用户名
但是在大多数情况下,您会丢失一些之前创建的个人资料。
, 我认为,更好的方法
在命令行
python manage.py createsuperuser
, 获取用户名(和大多数信息)的另一种方法是直接访问数据库并从表中读取信息。