2017-04-04 60 views
2

我希望做這樣的事情不工作的代碼在我的Django模板:如何直接在Django模板中訪問環境變量?

{% if os.environ.DJANGO_SETTINGS_MODULE == "settings.staging" %} 

是這樣的可能嗎?我的解決方法是創建一個上下文處理器,使變量在所有模板中都可用,但想知道是否有更直接的方法來實現相同的結果。

+0

否,環境是不是從模板訪問沒有明確將其添加 – dentemm

+0

你也可以使用一個自定義模板標籤和過濾器,以獲得環境變量的模板。 –

回答

2

使用context_processor,請執行以下操作,您應該能夠在模板中訪問os.environ.DJANGO_SETTINGS_MODULE作爲SETTING_TYPE。例如,你可以使用{% if SETTING_TYPE == "settings.staging" %}

# project/context_processors.py 
import os 

def export_vars(request): 
    data = {} 
    data['SETTING_TYPE'] = os.environ.DJANGO_SETTINGS_MODULE 
    return data 


# project/settings.py (your actual settings file) 


TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       ... 
        'project.context_processors.export_vars', 
       ... 
      ] 
     } 
     } 
    ]