1. ホーム
  2. django

[解決済み] djangoで独自のコンテキストプロセッサを作成する

2023-04-10 01:02:48

質問

私は、ある変数をすべてのビューに渡す必要がある点にたどり着きました(ほとんどはカスタム認証タイプの変数です)。

独自のコンテキストプロセッサを書くことがこれを行うための最良の方法であると言われましたが、いくつかの問題があります。

私の設定ファイルは次のようなものです。

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.contrib.messages.context_processors.messages",
    "sandbox.context_processors.say_hello", 
)

見ての通り、'context_processors'というモジュールとその中の'say_hello'という関数を持っています。

これは次のようになります。

def say_hello(request):
        return {
            'say_hello':"Hello",
        }

これでビューの中で次のようなことができると考えていいのでしょうか?

{{ say_hello }}

今現在、私のテンプレートでは、これは何もレンダリングされません。

私のビューは次のようになります。

from django.shortcuts import render_to_response

def test(request):
        return render_to_response("test.html")

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

あなたが書いたコンテキストプロセッサは動作するはずです。 問題は、あなたのビューにあります。

でレンダリングされていることは確かですか? RequestContext ?

例えば

def test_view(request):
    return render_to_response('template.html')

上のビューでは、コンテキストプロセッサは TEMPLATE_CONTEXT_PROCESSORS . このため RequestContext のようにします。

def test_view(request):
    return render_to_response('template.html', context_instance=RequestContext(request))