2012-08-28 137 views
7

我遇到了一個非常奇怪的錯誤。我在我的settings.py文件中定義的,像這樣的應用程序ID:模板中的Django settings.py變量

CARDSPRING_APP_ID = '################' 

這幾乎在每一頁上的工作在我的網站上,除了一個。奇怪的是,其他變量的工作。在網頁上的腳本中,我有以下幾點:

alert("cs appid=" + {{ CARDSPRING_APP_ID }} + 
" sectoken=" + {{ securityToken }} + 
" timestamp= " +{{ timestamp }} + 
" hash = " + {{ digestedHash }} + 
" ccnum " + $('.card-number').val() + 
" exp" + $('.expiration-month').val() + $('.expiration-year').val() + 
" user = " + {{ csid }}); 

當頁面呈現,它的計算結果這個

alert("cs appid=" + + 
" sectoken=" + DDFJRMZXD12WVWHFFC###### + 
" timestamp= " +1346183125 + 
" hash = " + a929b3aec9179c700c09d###### + 
" ccnum " + $('.card-number').val() + 
" exp" + $('.expiration-month').val() + $('.expiration-year').val() + 
" user = " + SG1###); 

重要的是,{{ CARDSPRING_APP_ID }}已評估不了了之。有誰知道爲什麼這可能是這種情況?謝謝!

UPDATE

我試圖創建一個context_processors.py文件,如下面的答案說明,並確保將其添加到適當的位置在settings.py。我仍然沒有任何運氣 - 它計算在一個頁面上,但不能在其他

更新2

的模板被稱爲用這個命令:

return render_to_response('howto'+str(number)+'.html',locals(),context_instance= RequestContext(request)) 

UPDATE 3 得到它的工作 - 這添加到我的settings.py需要

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
    "myapp.context_processors.cardspring", 
) 
+1

你有一個上下文處理器,它給模板中的CARDSPRING_APP_ID值嗎? –

+0

我不確定 - 我將如何檢查?我知道'CARDSPRING_APP_ID'在網站的其他頁面上正確評估,而不是在這個頁面上。 – mythander889

+0

那麼你如何將'CARDSPRING_APP_ID'傳遞給這些頁面呢?無論如何將它添加爲上下文處理器可能會更好,因爲它會自動將其添加到所有頁面。 –

回答

8

創建一個名爲context_processors.py文件,並寫入以下背景處理器:

from django.conf import settings 

def cardspring(request): 
    return { 'CARDSPRING_APP_ID': settings.CARDSPRING_APP_ID } 

在Django配置文件,其中your.location是你context_processors.py文件的位置,然後添加到your.location.context_processors.cardspringTEMPLATE_CONTEXT_PROCESSORS

+0

我現在正在'settings.py'中尋找,但是沒有看到'TEMPLATE_CONTEXT_PROCESSORS'。我應該添加這個嗎? – mythander889

+0

@ mythander889:是的,如果不存在,那麼你應該添加它。確保您還添加了默認值(請參閱https://docs.djangoproject.com/en/1.4/ref/settings/#template-context-processors),然後添加您自己的上下文處理器。 –

+0

我已經添加了它,正如你在[這裏](http://www.b-list.org/weblog/2006/jun/14/django-tips-template-context-processors/)的幫助下描述的那樣,但是仍然沒有任何運氣。有什麼我必須包括在HTML文件本身?這是我能想到的唯一可能不同的方面 – mythander889