1. ホーム
  2. python

[解決済み] 独自のテンプレートで内蔵のパスワードリセット/変更ビューを使用するにはどうすればよいですか?

2023-01-27 13:47:37

質問

例えば、私は url '^/accounts/password/reset/$'django.contrib.auth.views.password_reset に、私のテンプレートファイル名を入れて送信していますが、もっとコンテキストの詳細を送信する必要があると思います。

パスワードリセットと変更の各ビューに追加するコンテキストを正確に知る必要があります。

どのように解決するのですか?

のソースを見てみると django.contrib.auth.views.password_reset のソースを見てみましょう。 のソースを見てみると、それが RequestContext . つまり、コンテキストプロセッサを使ってコンテキストを変更することで、必要な情報を注入することができるようになります。

Bリストには コンテキストプロセッサの紹介 .

編集(実際の質問が何であったのか混乱していたようです)。

あなたは、次のことに気がつくでしょう password_reset という名前付きパラメータを取ります。 template_name :

def password_reset(request, is_admin_site=False, 
            template_name='registration/password_reset_form.html',
            email_template_name='registration/password_reset_email.html',
            password_reset_form=PasswordResetForm, 
            token_generator=default_token_generator,
            post_reset_redirect=None):

チェック パスワードリセット をご覧ください。

...このように、urls.pyのようなもので。

from django.conf.urls.defaults import *
from django.contrib.auth.views import password_reset

urlpatterns = patterns('',
     (r'^/accounts/password/reset/$', password_reset, {'template_name': 'my_templates/password_reset.html'}),
     ...
)

django.contrib.auth.views.password_reset にマッチする URL に対して呼び出されます。 '/accounts/password/reset' にマッチする URL に対して、キーワード引数 template_name = 'my_templates/password_reset.html' .

それ以外の場合は、コンテキストを提供する必要はありません。 password_reset ビューが自分自身の面倒を見るからです。どのようなコンテキストが利用可能かを確認したい場合は、以下のように TemplateSyntax という名前のローカル変数を持つフレームをスタックトレースで見つけることができます。 context . もしコンテキストを変更したいのであれば、私がコンテキストプロセッサについて上で述べたことは、おそらく行くべき道でしょう。

要約すると、独自のテンプレートを使用するために必要なことは何でしょうか?まず template_name キーワード引数を与えます。URLパターンのタプルの3番目のメンバーとして辞書を含むことによって、ビューにキーワード引数を供給することができます。