【问题标题】:Django: How change the password of another userDjango:如何更改另一个用户的密码
【发布时间】:2019-07-05 01:25:00
【问题描述】:

我正在通过 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-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

【问题讨论】:

  • 我认为您已经可以从 django 管理站点执行此操作了。

标签: django django-forms django-views


【解决方案1】:

您可以使用 set_password() 更改用户密码 首先,您应该选择具有此类代码的用户

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

然后你就可以设置密码了

user.set_password(password)
user.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 2021-03-22
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多