传递请求对象以使用基于类的视图形成实例

时间:2012-09-16 19:07:52

标签: python django django-forms

您好我想使用基于类的视图的snippet,但此表单的实例必须传递User对象ex。

theform = forms.PasswordReset(request.user,request.POST)

这是一个问题,如何使用基于类的视图执行此操作:

class UserChangePassword(FormView):
    form_class = PasswordReset
    template_name = 'profile/change_password.html'
    success_url = reverse_lazy('user_account')

1 个答案:

答案 0 :(得分:7)

这里有两个选项:

编写自己的get_form方法。

def get_form(self, form_class):
    return form_class(self.request.user, self.request.POST)

编写您自己的get_form_kwargs并更新表单的代码。

def get_form_kwargs(self):
    kwargs = super(UserChangePassword, self).get_form_kwargs()
    kwargs.update({'user': self.request.user, 'post': self.request.POST})
    return kwargs

在这种情况下,您还需要更新表单,以便与kwargs对一起正常使用。