20

In Django:

I have created a super user and can view all the users

I have also implemented forgot password for my user, who can input their email and a password reset link is sent to their email and then the user can reset his password

But how can admin change some users password from the admin dashboard

2
  • Changing password in admin seems not secure. Is there any specific reason why you want to do that? Commented Dec 10, 2020 at 19:17
  • In case you customized the UserChangeForm, the answer is here stackoverflow.com/questions/15456964/… Commented Mar 12, 2021 at 4:25

5 Answers 5

19

Django does not store raw (clear text) passwords on the user model, but only a hash (see the documentation of how passwords are managed for full details). Because of this, do not attempt to manipulate the password attribute of the user directly. This is why a helper function is used when creating a user.

To change a user’s password, you have several options:

manage.py changepassword *username* offers a method of changing a user’s password from the command line. It prompts you to change the password of a given user which you must enter twice. If they both match, the new password will be changed immediately. If you do not supply a user, the command will attempt to change the password whose username matches the current system user.

You can also change a password programmatically, using set_password():

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

If you have the Django admin installed, you can also change user’s passwords on the authentication system’s admin pages. Django also provides views and forms that may be used to allow users to change their own passwords.

Changing a user’s password will log out all their sessions. See Session invalidation on password change for details.

Sign up to request clarification or add additional context in comments.

Comments

18

We can reset other user password from Django admin interface by adding UserAdmin in admin.py file. Used Django 3.1 for the example.

admin.py

from django.contrib import admin
from .models.models import User
from django.contrib.auth.admin import UserAdmin

admin.site.register(User, UserAdmin)

Then we will able to see the below section in the user edit page of Django admin interface.

enter image description here

By clicking on the this form we can go to the reset password form.

enter image description here

1 Comment

This is a perfect solution.
8

In your admin.py file, you can register a UserAdmin to your User model like so:

from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
from django.contrib import admin
from <my-app> import models    

@admin.register(models.User)
class UserAdmin(DjangoUserAdmin):
    
    # extra logic:
    ...

Comments

7

This answer is just an extension of answer by @kunal Sharma

To change user password from Django admin

Go into the user

enter image description here

and click this form, and a form below will be shown, change password there

enter image description here

Comments

-2

Run these commands in your CMD and then set change any user password:

python manage.py shell
from django.contrib.auth.models import
u=User.objects.get(username="user.name")
u
u.set_password("mynewpasssword")
u.save

2 Comments

I think it should be u.save()
The second line should be ```from django.contrib.auth.models import User``

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.