如何将Django的PasswordChangeView与自定义用户一起使用?

时间:2017-06-12 21:15:02

标签: python django django-views

我想使用默认的PasswordChangeView来更改项目中用户的密码。问题是默认情况下它适用于当前用户。是否可以将视图与自定义用户一起使用,即在URL中提供?

# this doesn't work by default
url(r'users/(?P<user_id>\d+)/change_password/$',
    PasswordChangeView.as_view()   
    name="password-change")

1 个答案:

答案 0 :(得分:1)

我认为PasswordChangeView旨在更改已登录用户的密码。然后,您必须创建一个继承自PasswordChangeView的视图,并覆盖方法get_form_kwargs,如下所示:< / p>

class _PasswordChangeView(PasswordChangeView):
    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs['user'] = User.objects.get(id=1)  # or any, or get id from url
        return kwargs

出于安全原因,请务必为此视图添加一些权限。顺便说一句,django管理员已经有了这个选项。