Джанго: Как сменить пароль другого пользователя - PullRequest
0 голосов
/ 05 июля 2019

Я создаю сайт Джанго.
Я устанавливаю некоторые аутентификации на этом сайте, такие как менеджер сайта, менеджер группы и обычный пользователь.
Когда системный менеджер или менеджер группы вошли в систему, они могли изменить пароль обычных пользователей как часть управления системой.
В django PasswordChangeForm или SetPasswordForm предоставляют некоторую форму смены пароля пользователя. Я думаю, что эти формы предназначены для смены пароля самих пользователей.
Да, мне это тоже нужно. Но мне также нужна форма смены пароля других пользователей, таких как админский сайт django. Как я могу построить форму?

Я прочитал код сайта администратора django.
Я нашел AdminPasswordChangeForm, могу ли я использовать этот класс?

forms.py

class MyAdminPasswordChangeForm(AdminPasswordChangeForm):
    def __init__(self, user, *args, **kwargs):
        self.user = user
        super().__init__(user, *args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'
views.py

class PasswordChange(PasswordChangeView):
    form_class = MyAdminPasswordChangeForm
    success_url = reverse_lazy('password_change_done')
    template_name = 'accounts/password_change/password_admin_change.html'

    def get(self, request, *args, **kwargs):
        if 'user_id' in self.request.session:
            user = User.objects.get(id=self.request.session['user_id'])
            form_class = self.get_form_class()
            form = form_class(user=user)

        return self.render_to_response(self.get_context_data())

    def get_form_class(self):
        return self.form_class

1 Ответ

2 голосов
/ 05 июля 2019

вы можете использовать set_password () для смены паролей пользователей сначала вы должны выбрать пользователя с таким кодом

user=User.objects.get(username=username)

тогда вы можете установить пароль

user.set_password(password)
user.save()
...