2017-06-12 21 views
0

我想使用默認的PasswordChangeView來更改項目中用戶的密碼。問題是,默認情況下它適用於當前用戶。是否可以使用自定義用戶的視圖,即在URL中提供?如何使用Django的PasswordChangeView與自定義用戶?

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

你想通過訪問一個URL來改變用戶的密碼?不知道這是個好主意。是否激發你想要做這件事的理由 –

+0

@MosesKoledoye我認爲如果進入該網址的current_user是一個超級管理員是個好主意,例如。 –

+0

我希望管理員能夠更改其他用戶的密碼。 – planetp

回答

1

我認爲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管理員已經有這個選項。

+0

感謝您的回答。如何獲得'get_form_kwargs()'中的URL參數值? – planetp

+1

nm,已經發現它 – planetp