如何重置Django管理员密码?

我正在使用Django(1.3版),忘记了管理员用户名和密码。如何重置两者?

是否可以将普通用户变为管理员,然后删除管理员状态?

475759 次浏览
  1. python manage.py createsuperuser将创建另一个超级用户,您将能够登录到管理员并记住您的用户名。
  2. 是的,为什么不呢?

要给普通用户权限,请使用python manage.py shell打开shell并尝试:

from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()

您可以使用createsuperuser命令创建一个新的超级用户。

python manage.py changepassword <user_name>

# EYZ0

您可以通过控制台尝试:

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()

然后你设置一个新密码(:

你也可能回答了一个错误的设置问题,没有工作人员。在这种情况下,前往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;

如果你忘了先创建admin用户,在manage.py上使用createsuperuser命令创建一个,然后修改密码。

另一件值得注意的事情是将用户的状态is_staff设置为活动。至少,这对我来说管用。为了更详细地了解,我创建了另一个superuser,正如人们上面解释的那样。然后我转到数据库表auth_user并搜索该用户名,以确保其is_staff标志设置为1。这终于允许我登录admin网站。

这是一个很好的问题。

Python manage.py changepassword user_name

例子:-

python manage.py changepassword mickey

新设置应该第一次运行 python manage.py createsuperuser来创建用户。似乎没有默认的用户名密码登录到admin。

python manage.py changepassword username

以防您不知道这里创建的用户名。您可以获得上述@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之类的地方。模型那么上面的解决方案将不起作用。 在这种情况下,您可以使用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

使用"python manage.py createsuperuser"命令创建一个新的超级用户。 以新的超级用户登录。点击“users”链接。然后单击要删除的用户。单击表单页面末尾的delete user。< / p >

注意:上述过程将对特定用户所做的活动日志进行更改。

你可以试试这个:

1.在没有控制台的情况下修改超级用户密码

python manage.py changepassword <username>

2.通过控制台修改超级用户密码

enter image description here # EYZ0 < / p >

检索用户名和密码的最佳方法之一是查看和更新它们。用户模型提供了一种完美的实现方法。

在本例中,我使用的是Django 1.9

  1. 导航到根目录i,e。你“管理”的地方。使用控制台或其他应用程序(如Git)定位文件。

  2. 使用“Python manage.py shell”命令检索Python shell。

  3. 输入以下命令导入用户模型 from django.contrib.auth.models import User"

  4. 输入以下命令获取所有用户 “users = User.objects.all()”;

  5. 打印用户列表 对于Python 2用户,使用命令"print users" 对于Python 3用户,使用命令"print(users)" 第一个用户通常是admin

  6. 选择你想要更改密码的用户。

    # EYZ0

  7. 设置密码

    # EYZ0

  8. 保存新密码

    # EYZ0

启动服务器,使用用户名和修改后的密码登录。

使用

Python manage.py dumpdata

然后查看末尾,您将找到用户名

如果您忘记了您的管理员,那么您需要通过使用创建新用户

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()

为什么我要用这个答案来回答这个问题?

因为,如前所述,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 createsuperuser

并重新插入密码和用户名 但是在大多数情况下,你会丢失一些你之前创建的配置文件

我认为,这是更好的方法 在命令行

Python manage.py创建超级用户

获取用户名(以及大部分信息)的另一种方法是直接访问数据库并从表中读取信息。

只需在命令行中输入以下命令:

python manage.py changepassword yourusername
如果在/admin/ website中需要一个reset_password链接,这是一种方法: # EYZ0 < / p >

如果你使用的是自定义用户模型

(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()

除了到@JamesO回答说明使用

python manage.py changepassword [username]

如果你不记得你的用户名:

1-在你的项目的主目录访问数据库(我使用sqlite3):

sqlite3 db.sqlite3

2-列出auth_user表的内容

SELECT * FROM auth_user ;

3-查找有is_superuser = 1的用户,在我的例子中是admin # EYZ0 < / p >