如何重置Django管理员密码?

时间:2011-06-15 13:00:02

标签: django admin

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

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

24 个答案:

答案 0 :(得分:626)

python manage.py changepassword <user_name>

see docs

答案 1 :(得分:152)

  1. python manage.py createsuperuser将创建另一个超级用户,您将能够登录管理员并重新记住您的用户名。
  2. 是的,为什么不呢。
  3. 要授予普通用户权限,请使用python manage.py shell打开一个shell并尝试:

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

答案 2 :(得分:100)

您可以尝试通过控制台:

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

并设置了一个新密码(:

答案 3 :(得分:19)

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

答案 4 :(得分:12)

这是一个非常好的问题。

python manage.py changepassword user_name

示例: -

{{1}}

答案 5 :(得分:10)

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

答案 6 :(得分:7)

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

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

  1. 导航到您的根目录i,e。你在哪里&#34; manage.py&#34;使用您的控制台或其他应用程序(如Git。)找到文件。
  2. 使用命令&#34; python manage.py shell&#34;检索Python shell。
  3. 键入以下命令导入用户模型 &#34;来自django.contrib.auth.models导入用户&#34;
  4. 键入以下命令获取所有用户 &#34; users = User.objects.all()&#34;
  5. 打印用户列表 对于Python 2用户,使用命令&#34; print users&#34; 对于Python 3用户,使用命令&#34; print(users)&#34; 第一个用户通常是管理员。

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

    "user = users[0]"

  7. 设置密码

    user.set_password('name_of_the_new_password_for_user_selected')

  8. 保存新密码

    "user.save()"

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

答案 7 :(得分:5)

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

答案 8 :(得分:4)

你可以试试这个:

1.不使用控制台更改超级用户密码

python manage.py changepassword <username>

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

enter image description here enter image description here

答案 9 :(得分:4)

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

答案 10 :(得分:3)

如果您不知道此处创建的用户名。您可以按上面的@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

答案 11 :(得分:2)

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

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

答案 12 :(得分:2)

另一件值得注意的事情是将用户的状态is_staff设置为有效。至少,这是什么使它适合我。有关详细信息,我创建了另一个superuser,如上所述。然后我转到数据库表auth_user并搜索该用户名,以确保其is_staff标志设置为1。这最终让我登录admin网站。

答案 13 :(得分:2)

执行此操作的两种方法:

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

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

因为如上所述,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'

答案 14 :(得分:1)

此外@JamesO 回答使用

 ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        // There are no request codes
                        Intent data = result.getData();
                        Uri selectedImage = data.getData(); //<----this is showing NULL, why?
                        uploadImageFile(selectedImage);
                    }
                }
            });

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

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

python manage.py changepassword [username]

2- 列出sqlite3 db.sqlite3 表的内容

auth_user

3- 查找具有 SELECT * FROM auth_user ; 的用户,在我的情况下是 admin screenshot of the command output (I don't have enough rep points)

答案 15 :(得分:0)

python manage.py changepassword username

答案 16 :(得分:0)

使用

  

python manage.py dumpdata

然后查看结尾处的用户名

答案 17 :(得分:0)

如果您忘记了管理员,则需要使用创建新用户

LocalThread.ThreadLocalMap

对于密码,有CLI命令begin()用于django更改用户密码

finish()

OR

Thread

或在Django env中运行此代码

import pandas as pd
import numpy as np

def cosine_similarity(dataset, user1, user2):
    """ return cosine similarity between two lists """
    dot_product = np.dot(dataset[user1], dataset[user2])
    norm_user1 = np.linalg.norm(dataset[user1])
    norm_user2 = np.linalg.norm(dataset[user2])
    return dot_product / (norm_user1 * norm_user2)

data = {
    "Rajan": {
        "Inception": 2.5,
        "Pulp Fiction": 3.5,
        "Anger Management": 3.0,
        "Fracture": 3.5,
        "Serendipity": 2.5,
        "Jerry Maguire": 3.0
    },
    "Rinku": {
        "Inception": 3.0,
        "Pulp Fiction": 3.5,
        "Anger Management": 1.5,
        "Fracture": 5.0,
        "Jerry Maguire": 3.0,
        "Serendipity": 3.5
    }
}

df = pd.DataFrame(data)

sim = cosine_similarity(df, 'Rajan', 'Rinku')
print(sim)

答案 18 :(得分:0)

最好的方法是直接在终端上输入

python manage.py createsuperuser

,然后再次输入另一个密码和用户名 但在大多数情况下,您会丢失一些之前创建的个人资料。

答案 19 :(得分:0)

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

  

python manage.py createsuperuser

答案 20 :(得分:0)

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

python manage.py changepassword yourusername

答案 21 :(得分:0)

如果在 reset_password 中需要 /admin/ website 链接,这是要走的路: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-a-password-reset-feature

答案 22 :(得分:0)

如果您使用自定义用户模型

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

答案 23 :(得分:-4)

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