Can any one point me to code where users can change their own passwords in Django?
Django comes with a user authentication system. It handles user accounts, groups, permissions and cookie-based user sessions. This document explains how things work.
How to change Django passwords
See the Changing passwords section
Navigation to your project where manage.py
file lies
$ python manage.py shell
type below scripts :
from django.contrib.auth.models import User u = User.objects.get(username__exact='john') u.set_password('new password') u.save()
You can also use the simple manage.py
command:
manage.py changepassword *username*
Just enter the new password twice.
from the Changing passwords section in the docs.
If you have the django.contrib.admin
in your INSTALLED_APPS
, you can visit: example.com/path-to-admin/password_change/
which will have a form to confirm your old password and enter the new password twice.
This is the command i used, just in case you are having problem in that throw 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()"
Very similar to @Ciro's answer, but more specific to the original question (without adding all the authentication views):
just add to urlpatterns
in urls.py
:
url('^change-password/$', auth_views.password_change, {'post_change_redirect': 'next_page'}, name='password_change'),
Note that post_change_redirect
specifies the url to redirect after the password is changed.
Then, just add to your template:
<a href="{% url 'password_change' %}">Change Password</a>