Django: интерфейс администратора: как изменить пароль пользователя

В Джанго:

Я создал суперпользователя и могу просматривать всех пользователей

Я также реализовал забытый пароль для моего пользователя, который может ввести свою электронную почту, и ссылка для сброса пароля будет отправлена ​​​​на их электронную почту, а затем пользователь сможет сбросить свой пароль.

Но как администратор может изменить пароль некоторых пользователей из панели администратора

Смена пароля в админке кажется небезопасной. Есть ли какая-то конкретная причина, по которой вы хотите это сделать?

ha-neul 10.12.2020 20:17

Если вы настроили форму UserChangeForm, ответ здесь stackoverflow.com/questions/15456964/…

UMR 12.03.2021 05:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
13
2
16 126
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

В вашем файле 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()

Solano Pillaca Jason Ennio 04.10.2022 03:04

Вторая строка должна быть ```from django.contrib.auth.models import User``

juanbits 07.12.2022 16:30

Другие вопросы по теме