2011-10-28 11 views
2

URLハンドラにauth_views.password_changeするextra_contextの値を渡す方法:私はこのようなパスワード変更用のURLハンドラを持つ

     url(r'^password/change/$', 
          auth_views.password_change, 
          {'template_name' : 'account/password/password_change_form.html'}, 
          name='auth_password_change'), 

すべてが良好で、私のテンプレートがロードされ、作品を変更するパスワードは、予想通り。ただし、私のテンプレートはrequest.userにアクセスする必要があります。テンプレートrequestは、組み込みのauth_views.password_changeビューからテンプレートにデフォルトで渡されません。

私は、auth_views.password_changeビューを追加のコンテキストで渡すことができ、テンプレートに渡すことができます。私はURLハンドラでそれを行う方法を知りません。

auth_views.password_changeを囲む別のビューを作成することができますが、URLハンドラ内でショートカットキーを使用する方法があるのか​​不思議です。

現在のrequestオブジェクトをextra_contextとしてauth_views.password_changeビューに渡すよう現在のURLハンドラを変更する方法を教えてください。

+0

私も例を探しています。 (私はv0.7を使用しています)ドキュメントを読んでコードを調べると、登録簿に埋め込まれたurl()呼び出しに渡された辞書に 'extra_context'が追加されたようです。上記のように分散ソースコードを変更する必要がない場合は、私自身がurls.pyに移植しているようです:(r '^ accounts /'、include( 'registration.urls') )。しかし、私はそこで "extra_context"をどのように渡すのですか? "include()"にはこれを行うための構文がありますか?私はそれを見つけることができませんでした。 –

答えて

2

通常、あなたはurlconfでこれを行いますが、urls.pyはリクエストにアクセスできないため、request.userをextra_contextに渡すことはできません。

しかしpassword_changeは、すべての組み込みのビューのように、テンプレートをレンダリングするためにRequestContextを使用しています - あなたが設定でCONTEXT_PROCESSORSリストからそれを削除した場合を除き、django.contrib.auth.context_processors.authによって渡された(userオブジェクトが自動的にそこにあることを意味しています。 py)。

関連する問題