我正在使用Django用户系统,我正在尝试实现他们的PasswordChangeForm,如下所示:
class Profile(LoginRequiredMixin, FormView):
template_name = 'user/profile.html'
form_class = PasswordChangeForm
据我了解,这应该有效,但我一直收到这个错误:
__init__() missing 1 required positional argument: 'user'
我真的不明白这意味着什么......
答案 0 :(得分:0)
答案 1 :(得分:0)
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()
并保存表单,以便设置新密码。可能还需要进行其他代码更改,正如我在答案开头所说的那样,您会发现使用内置视图更容易。