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

jst*_*jst 2 python django django-forms

嗨我想使用基于类的视图的片段,但此表单的实例必须传递User对象ex.

theform = forms.PasswordReset(request.user,request.POST)
Run Code Online (Sandbox Code Playgroud)

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

class UserChangePassword(FormView):
    form_class = PasswordReset
    template_name = 'profile/change_password.html'
    success_url = reverse_lazy('user_account')
Run Code Online (Sandbox Code Playgroud)

Ale*_*yev 8

你有两个选择:

编写自己的get_form方法.

def get_form(self, form_class):
    return form_class(self.request.user, self.request.POST)
Run Code Online (Sandbox Code Playgroud)

编写自己的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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您还需要更新表单以使用kwargs对正常工作.