【发布时间】: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