Django : comment changer le mot de passe d’un utilisateur en ligne de commande

Comment changer le mot de passe d’un utilisateur dans un framework Django en ligne de commande ?

En fait c’est assez simple. Il faut ouvrir un shell python, importer le modèle User, récupérer l’objet correspondant à votre utilisateur, modifier l’attribut « password » et sauver l’objet.

Ne pas oublier d’activer l’environnement virtuel si nécessaire.

Voici le code correspondant à la description (n’oubliez pas de changer l’attribut « username » afin qu’il corresponde à votre utilisateur et le « password » bien sûr)

# Lancement du shell
python manage.py shell

# Le prompt change !!! >>>

# Chargement du modèle User
from django.contrib.auth.models import User

# Récupération de l'objet correspondant à notre utilisateur root
u = User.objects.get(username='root')

# Changement du mot de passe
u.set_password('mon_mot_de_passe_res_complique')

# Sauvegarde
u.save()

# On quitte le shell
exit()

Manipuler les objets Django en CLI via le shell n’est pas bien compliqué, mais terriblement utile et puissant.

2 Replies to “Django : comment changer le mot de passe d’un utilisateur en ligne de commande”

  1. Je propose une version qui produit un mot de passe ± aléatoire et l'envoi par courriel :

    >>> from django.contrib.auth.models import User

    >>> from django.core.mail import send_mail

    >>> import random

    # Remplacer ****** par l'utilisateur pour qui il faut changer le mot de passe

    >>> u = User.objects.get(username='******')

    >>> courriel = u.email

    >>> nouveaumotdepasse= ''

    >>> for i in range(10): # longueur du mot de passe

    >>> nouveaumotdepasse += random.choice(u"abcdefghijklmnopqrstuvwxyz0123456789éàèù@µ_-")

    >>> u.set_password(nouveaumotdepasse)

    >>> u.save()

    >>> send_mail(u'Changement du mot de passe', u'Votre mot de passe a été changé, c'est désormais '+ nouveaumotdepasse + u' À bientôt !', 'from@site.fr', [courriel], fail_silently=False)

    C'est d'ailleurs que Django ne permette pas en natif de faire ce genre de manipulation via la zone d'administration automatique.

Laisser un commentaire