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

时间:2017-07-28 13:47:49

标签: python django

我正在使用基于类的视图和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 个答案:

答案 0 :(得分:1)

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

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