如何在 FormView 中使用 SetPasswordForm



我正在使用Django自己的SetPasswordForm()表单类,因此我可以允许用户重置密码而无需提供旧密码。

我的观点如下:

class UserSetPassword(FormView):
template_name = 'accounts/users/user_set_password.html'
form_class = SetPasswordForm
success_url = reverse_lazy('user_list')
def form_valid(self, form):
form.save()
messages.success(self.request, 'Initial password set')
return super(UserSetPassword, self).form_valid(form)

但是,这会导致错误:

TypeError at /users/set_password/
__init__() missing 1 required positional argument: 'user'

我哪里出错了?

SetPasswordForm()要求您传递要为其设置密码的用户作为参数。您可以使用get_form_kwargs方法执行此操作,该方法将返回一个字典,其中包含将传递给表单__init__kwargs,这将在您的情况下注入用户。请参阅此处的示例 https://www.pydanny.com/adding-django-form-instance-attributes.html

最新更新