2011-10-11 60 views
3

我有一個奇怪的問題。 基本上,在我的settings.py文件,我有4個變量django設置變量在傳遞給模板時丟失了

URL_MAIN = 'http://www.mysite' 
URL_JOBS = 'http://jobs.mysite' 
URL_CARS = 'http://cars.mysite' 
URL_HOMES = 'http://homes.mysite' 

在我的views.py我有通常的:

from settings import * 

我有6次打電話給他們,只是把他們送回模板內上下文:

class CarsHp(TemplateView): 
    ... 

class JobsHp(TemplateView): 
    ... 

class HomesHp(TemplateView): 
    ... 

class CarsList(TemplateView): 
    ... 

class JobsList(TemplateView): 
    ... 

class HomesList(TemplateView): 
    ... 

正在被由

稱爲在網址

所有的這些觀點具有相同的語句:

context['URL_MAIN'] = URL_MAIN 
... 

所有4個變量。

在模板中,我正確地獲取了其中的所有4個,除了URL_MAIN,其中2個6個視圖中的「丟失」。我使用古典{{URL_MAIN}}訪問它們,並且我一直在嘗試一切,從移動到重命名,但仍然沒有顯示URL_MAIN(我得到空字符串,沒有錯誤類型)後,從2的意見。所有功能基本上共享相同的代碼(查詢和數據處理部分除外),並且這些設置的變量正在分配並返回。沒有任何類型的檢查或修改。我一直在嘗試與Django的殼,我總是可以檢索它們。

我們正在通過apache提供服務,併爲robots.txt文件和靜態文件提供了一些proxypassing配置。不嚴重」。

我沒有發佈全部6個視圖源代碼,只是因爲它們很長,相關部分都在上面描述。但我可以發佈他們,如果你想,我只是不知道它是否真的有用,因爲我已經三重檢查所有的名稱衝突或雙重聲明或不正確的使用來源。

感謝所有提前,這是非常驚人的我的大腦

回答

5

理想情況下,你應該使用模板的上下文處理器此。它會減少你的代碼,並讓你看到問題的確切位置。

請在您的項目一個名爲urls_context_processor.py(或類似),並把你的變量有:

def common_urls(request): 
    return { 
     'URL_MAIN': "http://...", 
     'URL_JOBS': "http://...", 
     'URL_CARS': "http://...", 
     'URL_HOME': "http://...", 
    } 

,並在你的settings.py

TEMPLATE_CONTEXT_PROCESSORS = = (
     .... 
     'my_project.urls_context_processor.common_urls',) 

現在的網址變量將在您的所有模板中自動提供,並且您不需要將它們硬編碼到每個視圖中。

+0

好的,謝謝,我正在儘快嘗試這個解決方案! –

相關問題