我正在用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
答案 0 :(得分:2)
您可以使用set_password()更改用户密码 首先,您应该选择具有此类代码的用户
user=User.objects.get(username=username)
然后您可以设置密码
user.set_password(password)
user.save()