Django のテンプレートから settings.py の定数にアクセスできますか? 質問する

Django のテンプレートから settings.py の定数にアクセスできますか? 質問する

settings.pyにテンプレートからアクセスできるようにしたい項目がいくつかありますが、どうすればいいのかわかりません。すでに試してみました

{{CONSTANT_NAME}}

しかし、それは機能しないようです。これは可能ですか?

ベストアンサー1

すべてのリクエストとテンプレートに同じ値を設定する場合は、コンテキストプロセッサがより適切です。

方法は次のとおりです。

  1. アプリ ディレクトリにファイルを作成します。すべてのコンテキストで値context_processors.pyを取得したいとします。ADMIN_PREFIX_VALUE

    from django.conf import settings # import the settings file
    
    def admin_media(request):
        # return the value you want as a dictionnary. you may add multiple values in there.
        return {'ADMIN_MEDIA_URL': settings.ADMIN_MEDIA_PREFIX}
    
  2. コンテキスト プロセッサをsettings.pyファイルに追加します。

    TEMPLATES = [{
        # whatever comes before
        'OPTIONS': {
            'context_processors': [
                # whatever comes before
                "your_app.context_processors.admin_media",
            ],
        }
    }]
    
  3. ビューで使用してRequestContext、テンプレートにコンテキストプロセッサを追加します。renderショートカットこれを自動的に実行します:

    from django.shortcuts import render
    
    def my_view(request):
        return render(request, "index.html")
    
  4. そして最後に、テンプレートで次の操作を行います。

    ...
    <a href="{{ ADMIN_MEDIA_URL }}">path to admin media</a>
    ...
    

おすすめ記事