首页 文章

使用基于类的视图更新Django中的用户密码

提问于
浏览
0

我正在写一个视图给管理员更新另一个用户的密码,使用基于类的视图和Django的模型SetPasswordForm .

我的views.py

class UserSetPasswordUpdateView(GroupRequiredMixin, FormView):
    form_class = forms.SetPasswordForm
    model =  User
    template_name = 'app/admin/object_update.html'
    success_url = reverse_lazy('portal:admin_user')
    group_required = u"Administrator"

    def get_form_kwargs(self):
        kwargs = super(UserSetPasswordUpdateView, self).get_form_kwargs()
        kwargs['user'] = User.objects.filter(pk=self.kwargs['pk'])
        return kwargs

update_change_password = UserSetPasswordUpdateView.as_view()

我的urls.py

url(r'^app/admin/update-user-pass/(?P<pk>[0-9]+)$', update_views.update_change_password, name='update_change_password'),

并且不显示任何错误,只需转到 success_url ,但密码不会更新 .

1 回答

  • 1

    您的视图基于FormView . 这没有任何模型形式的知识,并且除了检查它是否有效之外,不对数据做任何事情 . 保存表单时,SetPasswordForm会更改密码,但此视图从不执行此操作 .

    您可以覆盖 form_valid 以显式调用 form.save() ,但最好使用更合适的基类,例如UpdateView,它将为您执行此操作 .

相关问题