Python 如何对自定义用户使用Django的PasswordChangeView?

Python 如何对自定义用户使用Django的PasswordChangeView?,python,django,django-views,Python,Django,Django Views,我想使用默认设置来更改项目中用户的密码。问题是默认情况下,它适用于当前用户。是否可以使用自定义用户的视图,即URL中提供的视图 # this doesn't work by default url(r'users/(?P<user_id>\d+)/change_password/$', PasswordChangeView.as_view() name="password-change") 我认为PasswordChangeView旨在更改已登录用户的密码。然

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

# this doesn't work by default
url(r'users/(?P<user_id>\d+)/change_password/$',
    PasswordChangeView.as_view()   
    name="password-change")
我认为PasswordChangeView旨在更改已登录用户的密码。然后您必须创建一个从PasswordChangeView继承的视图,并重写方法get_form_kwargs,如下所示:

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管理员已经有了这个选项。

您想通过访问url来更改用户密码吗?我不确定这是个好主意。一定要激发你想做的理由this@MosesKoledoye例如,如果当前输入该url的用户是超级管理员,我认为这是一个好主意。我希望管理员能够更改其他用户的密码。django admin已经具有此功能。感谢您的回答。如何在get_form_kwargs中获取URL参数值?