2017-06-12 9 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そのURLに入っているcurrent_userが例えばスーパー管理者の場合、それは良い考えだと思います。 –

+0

管理者が他のユーザーのパスワードを変更できるようにします。 – planetp

答えて

1

私はPasswordChangeViewがすでにログインしているユーザーのパスワードを変更するように設計されていることを考えて、あなたは、このような方法get_form_kwargs PasswordChangeViewからその継承ビューを作成し、上書きする必要があります。

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

関連する問題