2014-01-08 42 views
1

在我的context_processors.py頁面中,我試圖將一個函數的值傳遞給另一個函數,但它不工作,我不明白爲什麼它不起作用。django在context_processors.py中調用函數

這是我context_processors.py頁面代碼:

def get_current_page_value(request): 
    if request.get_full_path() == settings.MENU_DETAIL_LINK_AA_DETAILS: 
     return {'current_page_value02':settings.MENU_DETAIL_VALUE_AA_DETAILS} 
    elif request.get_full_path() == settings.MENU_DETAIL_LINK_BB_DETAILS: 
     return {'current_page_value02':settings.MENU_DETAIL_VALUE_BB_DETAILS} 
    else: 
     return {'current_page_value02':settings.MENU_DETAIL_VALUE_CC_DETAILS} 


def resume_menu_list(request): 
    if not request.user.is_authenticated(): 
     return {} 
    try: 
     current_page_val = current_page_value02 

如何傳遞的價值current_page_value02get_current_page_value(要求)resume_menu_list(請求)

我在設置頁面中聲明的值:

'X.core.context_processors.get_current_page_value', 
'X.core.context_processors.resume_menu_list', 
+0

我認爲,你需要一箇中間件才能做到這一點。上下文處理器用於向模板提供附加數據。 – pkacprzak

回答

1

如果您要訪問函數的返回值,你必須調用它。

get_current_page_value() 

這將返回一個字典,然後你就可以訪問各個按鍵

get_current_page_value()['current_page_value02'] 

所以,你可以包括get_current_page_value()['current_page_value02']在你的背景處理器。

上下文處理器真的應該是不同的,而不是相互依賴。如果你確實在上下文處理器中調用了get_current_page_value函數,那麼它將被調用兩次 - 一次作爲上下文處理器,一次被調用resume_menu_list。這對我來說看起來並不合適,但我不確定該提出什麼建議,因爲我不完全明白你想要達到的目標。

+0

謝謝這確實有幫助。 – user1261774