¿Cómo restablecer la contraseña de administrador de Django?

449

Estoy usando Django (versión 1.3) y he olvidado el nombre de usuario y la contraseña de administrador. ¿Cómo restablecer ambos?

¿Y es posible convertir a un usuario normal en administrador y luego eliminar el estado de administrador?

IamH1kc
fuente

Respuestas:

783
python manage.py changepassword <user_name>

ver documentos

JamesO
fuente
77
acabo de darme cuenta de que dijiste que olvidaste el nombre de usuario ... 'admin' siendo el nombre de usuario en mi respuesta no será de mucha ayuda.
JamesO
8
@ user794916 Esa es una elección bastante extraña si no recuerda el nombre de usuario. :-)
DrTyrsa
1
Puede cambiar el nombre de usuario de "admin" a otro nombre de usuario apropiado. : D
mxi1
44
Django es el mejor. todo es tan fácil
DMTintner
55
Si ha olvidado el nombre de usuario, puede manage.py createsuperusercrear un segundo superusuario y luego ver la lista de Usuarios para encontrar el original. Luego inicie sesión como el original y elimine el nuevo superusuario.
Shacker
173
  1. python manage.py createsuperuser creará otro superusuario, podrá iniciar sesión en admin y recordar su nombre de usuario.
  2. Si por qué no.

Para otorgar privilegios de usuario normales, abra un shell con python manage.py shelle intente:

from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
DrTyrsa
fuente
Si es posible, ¿cómo hacerlo?
IamH1kc
Con este enfoque parece que el usuario no puede acceder al administrador de django
keul
3
@LucaFabbri también deberías configuraruser.is_staff = True
Aaron McMillin el
122

Puedes probar a través de la consola:

python manage.py shell

luego use el siguiente script en shell

from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)

te listará a todos los súper usuarios en el sistema. si reconoce su nombre de usuario de la lista:

usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()

y estableces una nueva contraseña (:

Ángel caido
fuente
12
User.objects.filter(is_superuser=True)
DrTyrsa
pip install django-extensions, agrégalo installed appsy ejecuta ./manage.py shell_plus. La Userclase estará disponible y tú puedes password-change.
Timo
Este método permite al usuario establecer cualquier contraseña, sin ninguna validación. Por lo tanto, puede establecer una contraseña muy simple (solo para fines de prueba), que el método de respuesta aceptado no permite.
Gautam J
14

Esta es una muy buena pregunta.

python manage.py changepassword nombre_usuario

Ejemplo:

python manage.py changepassword mickey
anand24
fuente
11

La nueva configuración debe ejecutarse primero python manage.py createsuperuser para crear un usuario. Parece que no hay una contraseña de nombre de usuario predeterminada para iniciar sesión en admin.

Kiran P.
fuente
9

Una de las mejores formas de recuperar el nombre de usuario y la contraseña es verlos y actualizarlos. El modelo de usuario proporciona una manera perfecta de hacerlo.

En este caso, estoy usando Django 1.9

  1. Navegue a su directorio raíz i, e. donde se encuentra el archivo "manage.py" utilizando su consola u otra aplicación como Git.
  2. Recupere el shell de Python con el comando "python manage.py shell".
  3. Importe el modelo de usuario escribiendo el siguiente comando "desde django.contrib.auth.models import User"
  4. Obtenga todos los usuarios escribiendo el siguiente comando "users = User.objects.all ()"
  5. Imprima una lista de los usuarios. Para los usuarios de Python 2, use el comando "usuarios de impresión". Para los usuarios de Python 3, use el comando "imprimir (usuarios)". El primer usuario suele ser el administrador.

  6. Seleccione el usuario al que desea cambiar su contraseña, p. Ej.

    "user = users[0]"

  7. Establecer la contraseña

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Guarda la nueva contraseña

    "user.save()"

Inicie el servidor e inicie sesión con el nombre de usuario y la contraseña actualizada.

Stephen Mwangi Wanjohi
fuente
La ventaja de este método manage.py changepasswordes que no está restringido a las contraseñas que puede o no puede usar, ya no es demasiado similar a la basura del nombre de usuario. (Esto está en mi entorno de desarrollo. No estoy abogando por contraseñas más débiles. Siempre debes usar contraseñas seguras en prod.)
Shashwat Black
5

También es posible que haya respondido mal una pregunta de configuración y que no tenga ningún miembro del personal. En cuyo caso, dirígete a postgres:

obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id           | 1
is_superuser | f
is_staff     | f
...

Para arreglar, edite directamente:

update auth_user set is_staff='true' where id=1;
Bryce
fuente
5

Dos formas de hacer esto:

El changepassword comando de gestión :

(env) $ python manage.py changepassword <username>

O (que se expande con algunas respuestas, pero funciona para cualquier modelo de Usuario extendido) usando el shell django-admin de la siguiente manera:

(env) $ python manage.py shell

Esto debería mostrar el símbolo del sistema de la siguiente manera:

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

Entonces querrías lo siguiente:

>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.get(username='[email protected]')
>>> user.set_password('new password')
>>> user.save()
>>> exit()

NB ¿Por qué he respondido esta pregunta con esta respuesta?

Porque, como se mencionó, User = get_user_model()funcionará para sus propios Usermodelos personalizados . Usar from django.contrib.auth.models import Userentonces User.objects.get(username='username')puede arrojar el siguiente error:

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
Micheal J. Roberts
fuente
4

Si olvidó crear un usuario administrador, primero cree uno con el createsuperusercomando activado y manage.pyluego cambie la contraseña.

rapid2share
fuente
4

Puedes probar esto:

1.Cambie la contraseña del superusuario sin consola

python manage.py changepassword <username>

2.Cambie la contraseña del superusuario a través de la consola

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Sr. Singh
fuente
1
Usar capturas de pantalla en lugar de código escrito es una muy mala práctica. Poeple no puede copiar y pegar su código para probarlo y no está disponible para la búsqueda en el sitio
FallenAngel
3

En caso de que no conozca los nombres de usuario tal como se crean aquí. Puede obtener los usuarios como se describe anteriormente en @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

Sin embargo, en caso de que haya creado su modelo de usuario independiente. Un caso simple es cuando desea utilizar el correo electrónico como nombre de usuario en lugar del nombre de usuario predeterminado. En cuyo caso su modelo de usuario vive en algún lugar como your_accounts_app.models, la solución anterior no funcionará. En este caso, puede utilizar el método 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
desbloqueame
fuente
3

si olvida a su administrador, entonces necesita crear un nuevo usuario usando

python manage.py createsuperuser <username>

y para la contraseña hay un comando CLI changepassword para que django cambie la contraseña del usuario

python manage.py changepassword <username>

O

django-admin changepassword <username>

O Ejecute este código en Django env

from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
Saurabh Chandra Patel
fuente
2

Otra cosa que vale la pena señalar es establecer el estado de su usuario is_staffcomo activo. Al menos, eso es lo que hace que funcione para mí. Para más detalles, creé otro superusercomo la gente explicó anteriormente. Luego voy a la tabla de la base de datos auth_usery busco ese nombre de usuario para asegurarme de que su is_staffbandera esté configurada 1. Eso finalmente me permitió iniciar sesión en el adminsitio.

usuario1330974
fuente
2

Cree un nuevo superusuario con el comando "python manage.py createduperuser". Inicie sesión como el nuevo súper usuario. Haga clic en el enlace 'usuarios'. Luego haga clic en el usuario que desea eliminar. haga clic en eliminar usuario al final de la página del formulario.

Nota: El proceso anterior realizará cambios en los registros de actividad realizados por ese usuario en particular.

Ishan Dixit
fuente
1

python manage.py changepassword nombre de usuario

Reglas Basant
fuente
1

utilizar

Python manage.py dumpdata

luego mira al final encontrarás el nombre de usuario

Pato Donald
fuente
0

La mejor manera es ir a su terminal y escribir

python manage.py createsuperuser

e inserte otra contraseña y nombre de usuario nuevamente, pero perderá parte de su perfil que ha creado antes en la mayoría de los casos.

CAP.tech
fuente
0

Creo que la mejor manera en la línea de comando

python manage.py createuperuser

nevriye gül
fuente
0

Es muy fácil simplemente escriba este comando en su línea de comando

python manage.py changepassword yourusername

Shrey
fuente
-1

Otra forma de obtener el nombre de usuario (y la mayoría de la información) es acceder a la base de datos directamente y leer la información de las tablas.

Mutken
fuente