2014-01-08 2 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_value02 из get_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

Смежные вопросы