Comment réinitialiser le mot de passe administrateur Django?


449

J'utilise Django (version 1.3) et j'ai oublié le nom d'utilisateur et le mot de passe administrateur. Comment réinitialiser les deux?

Et est-il possible de transformer un utilisateur normal en administrateur, puis de supprimer le statut d'administrateur?

Réponses:


783
python manage.py changepassword <user_name>

voir les documents


7
vient de réaliser que vous avez dit que vous avez oublié le nom d'utilisateur ... 'admin' étant le nom d'utilisateur dans ma réponse ne sera pas d'une grande aide alors!
JamesO

8
@ user794916 C'est un choix plutôt étrange si vous ne vous souvenez pas du nom d'utilisateur. :-)
DrTyrsa

1
Vous pouvez changer le nom d'utilisateur de "admin" en un autre nom d'utilisateur approprié. : D
mxi1

4
Django est le meilleur. tout est si simple
DMTintner

5
Si vous avez oublié le nom d'utilisateur, vous pouvez faire manage.py createsuperuserpour créer un deuxième superutilisateur, puis afficher la liste des utilisateurs pour trouver l'original. Connectez-vous ensuite en tant qu'original et supprimez le nouveau superutilisateur.
shacker

173
  1. python manage.py createsuperuser créera un autre superutilisateur, vous pourrez vous connecter à l'administrateur et mémoriser votre nom d'utilisateur.
  2. Oui pourquoi pas.

Pour donner un privilège d'utilisateur normal, ouvrez un shell avec python manage.py shellet essayez:

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

Si c'est possible, comment faire?
IamH1kc

Avec cette approche semble que l'utilisateur ne peut pas accéder à django admin
keul

3
@LucaFabbri que vous devez également définiruser.is_staff = True
Aaron McMillin

122

Vous pouvez essayer via la console:

python manage.py shell

puis utilisez le script suivant dans le shell

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

vous répertoriera tous les super utilisateurs du système. si vous reconnaissez votre nom d'utilisateur dans la liste:

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

et vous définissez un nouveau mot de passe (:


12
User.objects.filter(is_superuser=True)
DrTyrsa

pip install django-extensions, ajoutez-le installed appset exécutez ./manage.py shell_plus. Le Usercours sera disponible et vous le pouvez password-change.
Timo

Cette méthode permet à l'utilisateur de définir n'importe quel mot de passe, sans aucune validation. Vous pouvez ainsi définir un mot de passe très simple (uniquement à des fins de test), ce que la méthode de réponse acceptée ne permet pas.
Gautam J


14

C'est une très bonne question.

python manage.py changepassword nom_utilisateur

Exemple :-

python manage.py changepassword mickey

11

la nouvelle configuration doit d' abord s'exécuter python manage.py createsuperuser pour créer un utilisateur. Il semble qu'il n'y ait pas de mot de passe par défaut pour se connecter à l'administrateur.


9

L'une des meilleures façons de récupérer le nom d'utilisateur et le mot de passe est de les afficher et de les mettre à jour. Le modèle utilisateur fournit un moyen parfait de le faire.

Dans ce cas, j'utilise Django 1.9

  1. Accédez à votre répertoire racine i, e. où se trouve votre fichier "manage.py" à l'aide de votre console ou d'une autre application telle que Git.
  2. Récupérez le shell Python à l'aide de la commande "shell python manage.py".
  3. Importez le modèle utilisateur en tapant la commande suivante "from django.contrib.auth.models import User"
  4. Obtenez tous les utilisateurs en tapant la commande suivante "users = User.objects.all ()"
  5. Imprimer une liste des utilisateurs Pour les utilisateurs de Python 2, utilisez la commande "imprimer les utilisateurs" Pour les utilisateurs de Python 3, utilisez la commande "imprimer (utilisateurs)" Le premier utilisateur est généralement l'administrateur.

  6. Sélectionnez l'utilisateur dont vous souhaitez modifier le mot de passe, par exemple

    "user = users[0]"

  7. Définissez le mot de passe

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Enregistrez le nouveau mot de passe

    "user.save()"

Démarrez le serveur et connectez-vous en utilisant le nom d'utilisateur et le mot de passe mis à jour.


L'avantage de cette méthode manage.py changepasswordest que vous n'êtes pas limité aux mots de passe que vous pouvez ou ne pouvez pas utiliser - plus trop similaire à la merde de nom d'utilisateur. (C'est dans mon environnement de développement. Je ne préconise pas des mots de passe plus faibles. Vous devriez toujours utiliser des mots de passe forts dans prod.)
Shashwat Black

5

Vous pouvez également avoir mal répondu à une question de configuration et n'avoir aucun membre du personnel. Dans ce cas, rendez-vous aux postgres:

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

Pour corriger, modifiez directement:

update auth_user set is_staff='true' where id=1;

5

Deux façons de procéder:

La changepassword commande de gestion :

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

Ou (qui développe quelques réponses, mais fonctionne pour tout modèle utilisateur étendu) en utilisant le shell django-admin comme suit:

(env) $ python manage.py shell

Cela devrait faire apparaître l'invite de commande du shell comme suit:

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

Ensuite, vous voudriez ce qui suit:

>>> 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 Pourquoi ai-je répondu à cette question avec cette réponse?

Parce que, comme mentionné, User = get_user_model()fonctionnera pour vos propres Usermodèles personnalisés . L'utilisation de from django.contrib.auth.models import Userpuis User.objects.get(username='username')peut générer l'erreur suivante:

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'

4

Si vous avez oublié de créer un administrateur, commencez par en créer un avec la createsuperusercommande, manage.pypuis modifiez le mot de passe.


4

Vous pouvez essayer ceci:

1.Modifier le mot de passe du superutilisateur sans console

python manage.py changepassword <username>

2.Modifier le mot de passe du superutilisateur via la console

entrez la description de l'image ici entrez la description de l'image ici


1
L'utilisation de captures d'écran au lieu de code écrit est une très mauvaise pratique. Poeple ne peut pas copier-coller votre code pour le tester et il n'est pas disponible pour une recherche sur site
FallenAngel

3

Si vous ne connaissez pas les noms d'utilisateur créés ici. Vous pouvez obtenir les utilisateurs comme décrit par @FallenAngel ci-dessus.

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

Cependant dans le cas où vous avez créé votre modèle d'utilisateur indépendant. Un cas simple est lorsque vous souhaitez utiliser le courrier électronique comme nom d'utilisateur au lieu du nom d'utilisateur par défaut. Dans ce cas, votre modèle utilisateur vit quelque part, comme your_accounts_app.models, alors la solution ci-dessus ne fonctionnera pas. Dans ce cas, vous pouvez utiliser à la place la méthode 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

3

si vous oubliez votre administrateur, vous devez créer un nouvel utilisateur en utilisant

python manage.py createsuperuser <username>

et pour le mot de passe, il y a une commande CLI changepassword pour django pour changer le mot de passe de l'utilisateur

python manage.py changepassword <username>

OU

django-admin changepassword <username>

OU Exécutez ce code dans Django env

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

2

Une autre chose à noter est de définir le statut de votre utilisateur is_staffcomme actif. Du moins, c'est ce qui fait que ça marche pour moi. Pour plus de détails, j'en ai créé un autre superusercomme les gens l'ont expliqué ci-dessus. Ensuite, je vais dans la table de base de données auth_useret recherche ce nom d'utilisateur pour m'assurer que son is_staffindicateur est défini sur 1. Cela m'a finalement permis de me connecter au adminsite.


2

Créez un nouveau superutilisateur avec la commande "python manage.py createuperuser". Connectez-vous en tant que nouveau super utilisateur. Cliquez sur le lien "utilisateurs". Cliquez ensuite sur l'utilisateur que vous souhaitez supprimer. cliquez sur supprimer l'utilisateur à la fin de la page du formulaire.

Remarque - Le processus ci-dessus apportera des modifications aux journaux d'activité effectués par cet utilisateur particulier.



1

utilisation

python manage.py dumpdata

puis regardez à la fin vous trouverez le nom d'utilisateur


0

La meilleure façon est de vous rendre sur votre terminal et de taper

python manage.py createsuperuser

et insérez à nouveau un autre mot de passe et nom d'utilisateur, mais vous perdrez une partie de votre profil que vous avez créé auparavant dans la plupart des cas.


0

Je pense que la meilleure façon Sur la ligne de commande

python manage.py crée un superutilisateur


0

C'est très simple, il suffit de taper cette commande en ligne de commande

python manage.py changepassword votre nom d'utilisateur


-1

Une autre façon d'obtenir le nom d'utilisateur (et la plupart des informations) consiste à accéder directement à la base de données et à lire les informations des tables.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.