2017-03-17 58 views
0

我正在尋找一種方法來設置一些站點範圍(或應用程序範圍)變量,例如網站(或應用程序)標題爲例,我會在我的模板中使用它(例如在我的頭文件中)。我有這樣的想法WordPress'bloginfo()Django - 設置和使用網站範圍內的變量以用於模板

理想情況下,我希望能夠在網站或應用程序級別定義任何類型的屬性。對於給定的應用程序,例如,我有:

應用

--attribute1(如標題)

--attribute2(如聯繫人電子郵件)

--Model1

---- AttributeX

---- AttributeY

- --- ...

這意味着「attribute1」對我的應用程序是唯一的。然後我需要一種方法來在我的模板中使用attribute1的值。 我希望我的問題很清楚。

回答

1

我一直使用站點範圍內(或應用範圍內)變量context processors

內,您的應用程序創建一個名爲context_processors.py一個單獨的文件(不用說,是不是強制性的命名它這樣,它只是一個約定)和該文件必須定義接受request參數,並返回至少一個功能一本字典。

類似的東西:

# yourapp/context_processors.py 

def static_vars(request): 
    return = { 
     'var1': 'Hello', 
     'var2': 'World', 
    } 

現在,您訪問的變量在你的模板作爲{{ var1 }}之前,你必須通過此功能可將TEMPLATES設置是這樣的:

# settings.py 

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [ 
     # dirs here 
    ], 
    'OPTIONS': { 
     'context_processors': [ 
      # some other context processors here and ... 
      'yourapp.context_processors.static_vars', 
     ], 
     'loaders': [ 
      # loaders here 
     ], 
    }, 
}, 

]

現在,您可以在每個模板中使用變量static_vars公開。

+0

有沒有辦法將其掛鉤到管理員?例如,網站的管理員可以更改網站的標題(或修復字幕中的拼寫錯誤)。 – GuitarExtended

+0

它已經「迷上」了。它也可以在管理員中使用! –

+0

我做了你的建議。但是我無法在管理員中看到(即編輯)這些靜態變量。我必須以某種方式在admin.py中註冊它們嗎?對不起,這些noob評論,我知道關於上下文處理器。 – GuitarExtended

1

如果你想在模板中使用這些變量,那麼你應該看看context processors。最簡單的解決方案是將context_processors.py添加到您的應用或項目中,然後將此文件的路徑添加到設置中的上下文處理器列表中