代码之家  ›  专栏  ›  技术社区  ›  pommi15

Django PasswordChangeForm实现错误

  •  0
  • pommi15  · 技术社区  · 10 年前

    我正在使用Django用户系统,我正在尝试实现他们的PasswordChangeForm,如下所示:

        class Profile(LoginRequiredMixin, FormView):
           template_name = 'user/profile.html'
           form_class = PasswordChangeForm
    

    据我所知,这应该是可行的,但我一直收到这个错误:

    __init__() missing 1 required positional argument: 'user'
    

    我真的不明白这意味着什么。。。。

    2 回复  |  直到 10 年前
        1
  •  0
  •   Alasdair    10 年前

    Django内置 password_change 看法使用这个比使用自己的更容易。有 instructions in the docs .

    视图当前的错误是没有将登录用户传递给表单 get_form_kwargs .

    class Profile(LoginRequiredMixin, FormView):
    
        def get_form_kwargs(self):
            kwargs = super(Profile, self).get_form_kwargs()
            kwargs['user'] = self.request.user
            return kwargs
    

    一旦你开始工作,你还需要重写 form_valid() 并保存表单,以便设置新密码。可能还需要其他代码更改,所以正如我在答案开头所说,您会发现使用内置视图更容易。

        2
  •  0
  •   Community Mohan Dere    9 年前

    可能是您没有将用户传递给表单?

    PasswordChangeForm(user=request.user)
    

    This question 很相似,可能会对你有所帮助