Quelqu'un peut-il m'indiquer un code où les utilisateurs peuvent changer leurs propres mots de passe dans Django ?
Réponses
Trop de publicités?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.
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()"
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é.
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>
- Réponses précédentes
- Plus de réponses
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.
7 votes
La documentation de Django est si complète et si facile d'accès que les tentatives permanentes de reproduire toute la documentation dans les réponses de SO ne peuvent apporter aucune valeur ajoutée.
3 votes
@Ben James : très bonne remarque. En fait, c'est la raison pour laquelle, au lieu de réécrire la documentation dans mes réponses, je me contente de donner les informations de base et de créer un lien vers la documentation.