2011-06-15 238 views
281

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

是否有可能使一个普通用户成为管理员,然后删除管理员状态?

回答

474
manage.py changepassword <user_name> 

see docs

+6

只是意识到,你说你忘记用户名......“管理员”是在用户名那么我的答案不会有太大的帮助! – JamesO 2011-06-15 13:10:23

+8

@ user794916如果你不记得用户名,这是一个很奇怪的选择。 :-) – DrTyrsa 2011-06-15 13:44:20

+0

您可以将用户名从“admin”更改为另一个适当的用户名。 :d – mxi1 2015-03-04 06:58:36

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

为了让普通用户权限,打开外壳,python manage.py shell和尝试:

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

如果可能的话,该怎么办呢? – IamH1kc 2011-06-15 13:21:53

+0

@ user794916您可以在Django admin中编辑任何用户。 – DrTyrsa 2011-06-15 13:29:32

+0

通过这种方法似乎是用户不能访问Django管理 – 2016-07-27 16:02:05

76

您可以尝试通过控制台:

python manage.py 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() 

和你设置新密码(:

+10

'User.objects.filter(is_superuser = TRUE)'' – DrTyrsa 2011-06-15 13:48:16

+0

PIP安装Django-extensions',将其添加到'安装apps'运行'./manage。 py shell_plus'。 '用户'类将可用,您可以'密码更改'。 – Timo 2018-03-02 13:45:50

4

您可能还回答了设置问题错了,有零工作人员在这种情况下,头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; 
3

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

1

另一件值得注意的事情是将用户的状态is_staff设置为活动状态。至少,这是什么使它对我有用。更多细节,我按照上面的解释创建了另一个superuser。然后我转到数据库表auth_user并搜索该用户名以确保其is_staff标志设置为1。终于让我登录到admin网站。

8

这是一个很好的问题。

蟒蛇manage.py changepassword USER_NAME

例子: -

python manage.py changepassword mickey 
9

新设置应该首轮python manage.py createsuperuser创建用户。似乎没有默认的用户名密码登录到管理员。

-1

蟒蛇manage.py changepassword用户名

2

如果你不知道的用户名是在这里创建。您可以按照上面的@FallenAngel所述获取用户。

但是,如果您创建了独立的用户模型。一个简单的例子是当你想使用电子邮件作为用户名而不是默认的用户名。在这种情况下,您的用户模型居住在某处,例如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 
0

创建命令“蟒蛇manage.py createsuperuser”一个新的超级用户。 以新的超级用户身份登录。点击'用户'链接。然后点击您想要删除的用户。点击表单页面末尾的删除用户。

注 - 以上过程将更改由该特定用户完成的活动日志。

2

你可以试试这个:

1.更改超级用户口令,而不控制台

python manage.py changepassword <username> 
通过控制台

2.Change超级用户口令

enter image description here enter image description here

1

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

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

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

  7. 选择您想更改密码的用户,例如

    "user = users[0]"

  8. 设置密码

    user.set_password('name_of_the_new_password_for_user_selected')

  9. 保存新密码

    "user.save()"

启动服务器和L使用用户名和更新后的密码。

+0

此方法优于'manage.py changepassword'的优点是您不受限于您可以使用或不能使用的密码 - 与用户名称废话不太相似。 (这是在我的开发环境中,我不主张使用较弱的密码,你应该始终在产品中使用强密码。) – 2018-03-09 02:59:17