В Джанго:
Я создал суперпользователя и могу просматривать всех пользователей
Я также реализовал забытый пароль для моего пользователя, который может ввести свою электронную почту, и ссылка для сброса пароля будет отправлена на их электронную почту, а затем пользователь сможет сбросить свой пароль.
Но как администратор может изменить пароль некоторых пользователей из панели администратора
Если вы настроили форму UserChangeForm, ответ здесь stackoverflow.com/questions/15456964/…
В вашем файле admin.py вы можете зарегистрировать UserAdmin
для своей User
модели следующим образом:
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:
...
Django не хранит необработанные (открытым текстом) пароли в пользовательской модели, а только хэш (подробности смотрите в документации по управлению паролями). По этой причине не пытайтесь напрямую манипулировать атрибутом пароля пользователя. Вот почему при создании пользователя используется вспомогательная функция.
Чтобы изменить пароль пользователя, у вас есть несколько вариантов:
manage.py changepassword *username*
предлагает метод изменения пароля пользователя из командной строки. Он предлагает вам изменить пароль данного пользователя, который вы должны ввести дважды. Если они оба совпадают, новый пароль будет немедленно изменен. Если вы не укажете пользователя, команда попытается изменить пароль, имя пользователя которого совпадает с текущим системным пользователем.
Вы также можете изменить пароль программно, используя set_password():
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
Если у вас установлен администратор Django, вы также можете изменить пароли пользователей на страницах администратора системы аутентификации. Django также предоставляет представления и формы, которые могут использоваться для того, чтобы пользователи могли изменять свои собственные пароли.
Изменение пароля пользователя приведет к выходу из всех его сеансов. Подробнее см. в разделе Аннулирование сеанса при смене пароля.
Этот ответ является просто продолжением ответа @kunal Sharma
Чтобы изменить пароль пользователя от администратора Django
Зайти в пользователя
и щелкните эту форму, и появится форма ниже, измените пароль там
Мы можем сбросить пароль другого пользователя из интерфейса администратора Django, добавив UserAdmin
в файл admin.py
. Для примера использовал Django 3.1.
admin.py
from django.contrib import admin
from .models.models import User
from django.contrib.auth.admin import UserAdmin
admin.site.register(User, UserAdmin)
Затем мы сможем увидеть приведенный ниже раздел на странице редактирования пользователя административного интерфейса Django.
Нажав на this form
мы можем перейти к форме сброса пароля.
Запустите эти команды в CMD, а затем установите любой пароль пользователя:
python manage.py shell
from django.contrib.auth.models import
u=User.objects.get(username = "user.name")
u
u.set_password("mynewpasssword")
u.save
Я думаю, что это должно быть u.save()
Вторая строка должна быть ```from django.contrib.auth.models import User``
Смена пароля в админке кажется небезопасной. Есть ли какая-то конкретная причина, по которой вы хотите это сделать?