如何重置Django管理员密码?

Iam*_*1kc 401 django admin

我正在使用Django(版本1.3)并忘记了管理员用户名和密码.如何重置?

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

Jam*_*esO 696

python manage.py changepassword <user_name>
Run Code Online (Sandbox Code Playgroud)

看文档

  • 如果你忘记了用户名,你可以通过`manage.py createsuperuser`来创建第二个超级用户,然后查看用户列表找到原来的。然后以原来的身份登录并删除新的超级用户。 (17认同)
  • @ user794916如果您不记得用户名,这是一个相当奇怪的选择.:-) (8认同)
  • 刚才意识到你说你忘记了用户名...'admin'是我答案中的用户名然后就不会有多大帮助了! (7认同)
  • django是最棒的.一切都很简单 (3认同)

DrT*_*rsa 161

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

要提供普通用户权限,请打开一个shell python manage.py shell并尝试:

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

  • @LucaFabbri你还需要设置`user.is_staff = True` (3认同)

Fal*_*gel 110

您可以尝试通过控制台:

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

然后在shell中使用以下脚本

from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)
Run Code Online (Sandbox Code Playgroud)

将列出系统上的所有超级用户.如果您从列表中识别出您的用户名:

usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
Run Code Online (Sandbox Code Playgroud)

并设置一个新密码(:

  • `User.objects.filter(is_superuser =真)` (11认同)

Mos*_*sab 26

除了@JamesO 回答指出使用

python manage.py changepassword [username]
Run Code Online (Sandbox Code Playgroud)

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

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

sqlite3 db.sqlite3
Run Code Online (Sandbox Code Playgroud)

auth_user2-列出表的内容

SELECT * FROM auth_user ;
Run Code Online (Sandbox Code Playgroud)

3-查找具有 的用户is_superuser = 1,在我的例子中,它是 命令输出的管理员屏幕截图(我没有足够的代表点)


Ald*_*und 20

您可以使用createsuperuser命令创建新的超级用户.


小智 14

这是一个非常好的问题.

python manage.py changepassword user_name

示例: -

python manage.py changepassword mickey
Run Code Online (Sandbox Code Playgroud)


小智 12

python manage.py changepassword username
Run Code Online (Sandbox Code Playgroud)


use*_*526 10

首先运行 新设置python manage.py createsuperuser以创建用户.似乎没有默认用户名密码登录管理员.


小智 8

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

在这种情况下,我正在使用Django 1.9

  1. 导航到您的根目录i,e.您使用控制台或其他应用程序(如Git)找到"manage.py"文件的位置.
  2. 使用命令"python manage.py shell"检索Python shell.
  3. 通过键入以下命令"从django.contrib.auth.models import User"导入用户模型
  4. 键入以下命令"users = User.objects.all()"获取所有用户
  5. 打印用户列表对于Python 2用户使用命令"print users"对于Python 3用户使用命令"print(users)"第一个用户通常是admin.

  6. 选择您要更改密码的用户,例如

    "user = users[0]"

  7. 设置密码

    user.set_password('name_of_the_new_password_for_user_selected')

  8. 保存新密码

    "user.save()"

启动服务器并使用用户名和更新的密码登录.


Mic*_*rts 8

有两种方法可以做到这一点:

changepassword 管理命令

(env) $ python manage.py changepassword <username>
Run Code Online (Sandbox Code Playgroud)

或者(扩展了一些答案,但适用于任何扩展的用户模型)使用django-admin shell,如下所示:

(env) $ python manage.py shell
Run Code Online (Sandbox Code Playgroud)

这应该会显示 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)
>>>
Run Code Online (Sandbox Code Playgroud)

那么你会想要以下内容:

>>> 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()
Run Code Online (Sandbox Code Playgroud)

NB为什么我用这个答案回答了这个问题?

因为,如上所述,User = get_user_model()将适用于您自己的自定义User模型。使用from django.contrib.auth.models import UserthenUser.objects.get(username='username')可能会抛出以下错误:

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
Run Code Online (Sandbox Code Playgroud)


Bry*_*yce 5

您可能还回答了设置问题,并且职员人数为零。在这种情况下,请前往postgres:

obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id           | 1
is_superuser | f
is_staff     | f
...
Run Code Online (Sandbox Code Playgroud)

要修复,请直接编辑:

update auth_user set is_staff='true' where id=1;
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您忘记创建管理员用户,请先使用createsuperuser命令创建一个,manage.py然后更改密码。


Jus*_*ill 5

您可以尝试以下方法:

1.无需控制台即可更改超级用户密码

python manage.py changepassword <username>
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明 在此处输入图片说明

  • 使用屏幕截图而不是书面代码是非常糟糕的做法。Poeple 无法复制粘贴您的代码进行测试,并且不可用于站内搜索 (3认同)

Sau*_*tel 5

如果您忘记了管理员,那么您需要使用以下命令创建新用户

python manage.py createsuperuser <username>
Run Code Online (Sandbox Code Playgroud)

对于密码,changepassword django 有 CLI 命令来更改用户密码

python manage.py changepassword <username>
Run Code Online (Sandbox Code Playgroud)

或者

django-admin changepassword <username>
Run Code Online (Sandbox Code Playgroud)

或者在 Django 环境中运行此代码

from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
Run Code Online (Sandbox Code Playgroud)