web-dev-qa-db-fra.com

Comment réinitialiser Django mot de passe administrateur?

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

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

386
IamH1kc
python manage.py changepassword <user_name>

voir documentation

664
JamesO
  1. python manage.py createsuperuser créera un autre superutilisateur, vous pourrez vous connecter à admin et vous rappeler votre nom d'utilisateur.
  2. Oui pourquoi pas.

Pour donner les privilèges d’un utilisateur normal, ouvrez un Shell avec python manage.py Shell et essayez:

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

Vous pouvez essayer via la console:

python manage.py Shell

puis utilisez le script suivant dans Shell

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

vous listera 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 (:

107
FallenAngel

Vous pouvez créer un nouveau superutilisateur avec la commande createsuperuser .

21
Aldarund

C'est une très bonne question.

python manage.py changepassword nom_utilisateur

Exemple :-

python manage.py changepassword mickey
14
anand24

nouvelle configuration devrait première utilisationpython 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.

11
user3526

L'un des meilleurs moyens de récupérer le nom d'utilisateur et le mot de passe consiste à les afficher et à les mettre à jour. Le modèle d'utilisateur fournit un moyen parfait de le faire.

Dans ce cas, j'utilise Django 1.9

  1. Accédez au répertoire racine i, e. Le fichier "manage.py" se trouve à 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 "python manage.py shell".
  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 Python 2, les utilisateurs utilisent la commande "print users" Pour Python 3 utilisateurs utilisent la commande "print (users)". Le premier utilisateur est généralement l'administrateur.

  6. Sélectionnez l'utilisateur que vous souhaitez changer de mot de passe, par exemple.

    "user = users[0]"

  7. Définir le mot de passe

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Sauvegarder le nouveau mot de passe

    "user.save()"

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

9

Vous pouvez essayer ceci:

1.Changer le mot de passe superutilisateur sans console

python manage.py changepassword <username>

2.Changez le mot de passe superutilisateur via la console

enter image description hereenter image description here

6
JustChill

Vous avez peut-être également mal répondu à une question de configuration et n’a aucun membre du personnel. Dans ce cas, dirigez-vous vers postgres:

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

Pour réparer, éditez directement:

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

Si vous avez oublié de créer l'utilisateur admin, commencez par en créer un avec la commande createsuperuser sur manage.py, puis modifiez le mot de passe.

5
rapid2share

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

Toutefois, dans le cas où vous avez créé votre modèle d'utilisateur indépendant. Un cas simple consiste à 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, tel que your_accounts_app.models, alors la solution ci-dessus ne fonctionnera pas. Dans ce cas, vous pouvez utiliser la méthode get_user_model à la place.

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
4
unlockme

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.

3
Ishan Dixit

Une autre chose à noter est de définir le statut de votre utilisateur is_staff comme actif. Au moins, c'est ce qui fait que ça marche pour moi. Pour plus de détails, j’ai créé un autre superuser comme expliqué ci-dessus. Ensuite, je vais à la table de base de données auth_user et recherche ce nom d'utilisateur pour m'assurer que son drapeau is_staff est défini sur 1. Cela m'a finalement permis de me connecter au site admin.

3
user1330974

python manage.py nom d'utilisateur changepassword

1
Basant Rules

utilisation

python manage.py dumpdata

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

0
donald duck

Deux façons de faire ceci:

La changepasswordcommande de gestion:

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

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

(env) $ python manage.py Shell

Cela devrait afficher l'invite de commande 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='[email protected]')
>>> user.is_staff = True
>>> user.save()
>>> exit()

N.B. Pourquoi ai-je répondu à cette question par cette réponse?

Comme indiqué ci-dessus, User = get_user_model() fonctionnera pour vos propres modèles User personnalisés. Utiliser from Django.contrib.auth.models import User puis 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'
0
Wind Up Lord Vexxos

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 la commande CLI changepassword pour Django pour changer le mot de passe de l'utilisateur

python manage.py changepassword <username>

OR

Django-admin changepassword <username>

OU Exécuter 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()
0