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.

172voto

Svetlozar Angelov Points 10583

Django est livré avec un système système d'authentification des utilisateurs. Il gère les comptes groupes, les permissions et les sessions utilisateur basées sur des cookies. Ce document document explique le fonctionnement du système.

Comment changer les mots de passe de Django

Voir le Changement de mots de passe section

  1. Navigation vers votre projet où manage.py le fichier ment

  2. $ python manage.py shell

  3. tapez les scripts ci-dessous :

    from django.contrib.auth.models import User u = User.objects.get(username__exact='john') u.set_password('new password') u.save()


Vous pouvez également utiliser la simple manage.py commandement :

manage.py changepassword *username*

Il suffit de saisir deux fois le nouveau mot de passe.

de la Changement de mots de passe dans la documentation.


Si vous avez le django.contrib.admin dans votre INSTALLED_APPS vous pouvez visiter : example.com/path-to-admin/password_change/ qui comportera un formulaire pour confirmer votre ancien mot de passe et saisir deux fois le nouveau mot de passe.

18 votes

Je ne pense pas que cela aide à créer des pages pour que les utilisateurs puissent changer leurs propres mots de passe - il suffit qu'un administrateur le fasse.

26voto

Ben James Points 41165

Vous pouvez aussi simplement utiliser le django.contrib.auth.views.password_change dans votre URLconf. Il utilise un formulaire et un modèle par défaut ; fournir les vôtres est facultatif.

6voto

Mr Singh Points 1034

Il n'est pas nécessaire d'aller dans le shell, d'entrer le mot de passe et d'entrer de nouveau le mot de passe.

 python manage.py changepassword <username> 
  or
/manage.py changepassword <username>

Utilisation du shell

python manage.py shell
from django.contrib.auth.models import User
users=User.objects.filter(email='<user_email>') 
  #you can user username or etc to get users query set
  #you can also use get method to get users
user=users[0]
user.set_password('__enter passwd__')
user.save()
exit()

6voto

yam Points 311

Ce tutoriel montre comment le faire avec des vues basées sur des fonctions :

Voir le dossier :

from django.contrib import messages
from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, redirect

def change_password(request):
    if request.method == 'POST':
        form = PasswordChangeForm(request.user, request.POST)
        if form.is_valid():
            user = form.save()
            update_session_auth_hash(request, user)  # Important!
            messages.success(request, 'Your password was successfully updated!')
            return redirect('change_password')
        else:
            messages.error(request, 'Please correct the error below.')
    else:
        form = PasswordChangeForm(request.user)
    return render(request, 'accounts/change_password.html', {
        'form': form
    })

Fichier Url :

from django.conf.urls import url
from myproject.accounts import views

urlpatterns = [
    url(r'^password/$', views.change_password, name='change_password'),
]

Et enfin, le modèle :

<form method="post">
  {% csrf_token %}
  {{ form }}
  <button type="submit">Save changes</button>
</form>

2voto

Ciro Santilli Points 3341

urls.py :

urlpatterns = [
    url(r'^accounts/', include('django.contrib.auth.urls')),

Modèle :

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

Documenté à : https://docs.djangoproject.com/en/1.9/topics/auth/default/#using-the-views

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