我正在使用Django(1.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之类的地方。模型那么上面的解决方案将不起作用。 在这种情况下,您可以使用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。

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

这是一个很好的问题。

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'

最好的方法是直接打开你的终端,然后打字

python manage.py createsuperuser

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

如果在/admin/网站需要一个reset_password链接,这是去的方式: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-a-password-reset-feature