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?
python manage.py changepassword <user_name>
python manage.py createsuperuser
créera un autre superutilisateur, vous pourrez vous connecter à admin et vous rappeler votre nom d'utilisateur.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()
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 (:
Vous pouvez créer un nouveau superutilisateur avec la commande createsuperuser
.
C'est une très bonne question.
python manage.py changepassword nom_utilisateur
Exemple :-
python manage.py changepassword mickey
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.
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.
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.
Sélectionnez l'utilisateur que vous souhaitez changer de mot de passe, par exemple.
"user = users[0]"
Définir le mot de passe
user.set_password('name_of_the_new_password_for_user_selected')
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.
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;
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.
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
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.
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
.
python manage.py nom d'utilisateur changepassword
utilisation
python manage.py dumpdata
puis regardez à la fin, vous trouverez le nom d'utilisateur
Deux façons de faire ceci:
La changepassword
commande 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'
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()