93 votes

Comment permettre aux utilisateurs de changer leurs propres mots de passe dans Django ?

Quelqu'un peut-il m'indiquer un code où les utilisateurs peuvent changer leurs propres mots de passe dans Django ?

17 votes

Si google nous a fait chercher des réponses au lieu d'y penser, stackoverflow nous fait demander des réponses au lieu même de les chercher.

4 votes

-1 pour 'plzsendmetehcodes'. BTW, vous devriez accepter une réponse correcte à vos questions.

9 votes

Oui, j'utilisais beaucoup Google, et je le fais toujours. Mais SO est plus facile et plus rapide, et vous pouvez participer à des discussions et entendre des réponses alternatives. Tant qu'il y aura des gens comme Svetlozer Angelov et d'autres, qui sont prêts à investir leur temps (et à gagner des points) pour répondre à des questions simples, eh bien, c'est à cela que sert SO.

1voto

ds58 Points 11

Une fois que le modèle d'url est ajouté comme indiqué dans la réponse de Ciro Santilli, un moyen rapide de permettre aux utilisateurs de modifier les mots de passe est de leur donner un "accès personnel" pour les fonctions d'administration. Si vous ne les ajoutez à aucun groupe ou ne leur donnez pas d'autorisations spéciales, ils peuvent toujours changer leur mot de passe en se rendant sur la page example.com/admin. L'accès personnel leur permet d'accéder à la page même si elle est vide ; dans le coin supérieur droit, ils peuvent cliquer sur "changer le mot de passe" et utiliser la fonction d'administration.

1voto

ji-ruh Points 561

Voici la commande que j'ai utilisée, juste au cas où vous auriez des problèmes avec cette commande. AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User' .

python manage.py shell -c "from django.contrib.auth import get_user_model; 
User = get_user_model(); 
u = User.objects.get(username='admin'); 
u.set_password('password123');
u.save()"

1voto

avsaditya Points 11

Par la documentation utiliser :

from django.contrib.auth.hashers import makepassword

La principale raison de faire cela est que Django utilise des mots de passe hachés pour les stocker dans la base de données.

password=make_password(password,hasher='default')
obj=User.objects.filter(empid=emp_id).update(username=username,password=password)

J'ai utilisé cette technique pour le modèle d'utilisateur personnalisé, qui est dérivé du modèle de l'utilisateur. AbstractUser modèle. Je suis désolé si j'ai techniquement mal orthographié la classe et la sous-classe, mais la technique a bien fonctionné.

0voto

Pablo Guerrero Points 183

Très similaire à la réponse de @Ciro, mais plus spécifique à la question originale (sans ajouter toutes les vues d'authentification) :

il suffit d'ajouter à urlpatterns en urls.py :

url('^change-password/$', auth_views.password_change, {'post_change_redirect': 'next_page'}, name='password_change'),

Notez que post_change_redirect spécifie l'url à rediriger après le changement de mot de passe.

Ensuite, il suffit de l'ajouter à votre modèle :

<a href="{% url 'password_change' %}">Change Password</a>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X