我正在使用Django(1.3版),忘记了管理员用户名和密码。如何重置两者?
是否可以将普通用户变为管理员,然后删除管理员状态?
我正在使用Django(1.3版),忘记了管理员用户名和密码。如何重置两者?
是否可以将普通用户变为管理员,然后删除管理员状态?
当前回答
有两种方法:
changpassword管理命令:
(env) $ python manage.py changepassword <username>
或者(扩展了一些答案,但适用于任何扩展的User模型)使用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()
注:为什么我要用这个答案来回答这个问题?
因为,如前所述,User = get_user_model()将适用于您自己的自定义用户模型。使用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 <username>
对于密码,有CLI命令changepassword用于django修改用户密码
python manage.py changepassword <username>
OR
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()
可使用createsuperuser命令创建新的超级用户。
最好的方法是直接打开你的终端,然后打字
python manage.py createsuperuser
并再次插入另一个密码和用户名 但在大多数情况下,你会丢失一些你之前创建的配置文件。
这是一个很好的问题。
Python manage.py changepassword user_name
例子:-
python manage.py changepassword mickey
有两种方法:
changpassword管理命令:
(env) $ python manage.py changepassword <username>
或者(扩展了一些答案,但适用于任何扩展的User模型)使用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()
注:为什么我要用这个答案来回答这个问题?
因为,如前所述,User = get_user_model()将适用于您自己的自定义用户模型。使用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'