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>
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.