от
Я создаю сайт от Django. Я устанавливаю некоторые аутентификации на этом сайте, такие как менеджер сайта, менеджер группы и обычный пользователь. Когда системный менеджер или менеджер группы вошли в систему, они могли изменить пароль обычных пользователей как часть управления системой. В 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

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 Ответ

0 голосов
от
Вы можете использовать set_password () для изменения паролей пользователей сначала вы должны выбрать пользователя с таким кодом
user=User.objects.get(username=username)
тогда вы можете установить пароль
user.set_password(password)
user.save()
    
...