2015-11-16 4 views
4

Мне нужно отобразить мой сайт без navbar, если в запросе есть аргумент, например nv = false, и я хочу передать переменную в контекст на основе этого, чтобы основной шаблон показывал блок или нет. На моем сайте также много функций json-rpc, и я не хочу добавлять дополнительные накладные расходы. как я могу это сделать, не переписывая все мои взгляды? (они не основаны на классах, а мой сайт использует django 1.8)django добавить контекст на основе запроса ко всем представлениям

+0

Возможный дубликат [Как передать переменные всех шаблонов в Django?] (HTTP://stackoverflow.com/questions/12030611/how-do-i-pass-variables-to-all-templates-in-django) – dsalaj

+0

Нет, его нет, необходимо обработать запрос, а затем передать переменную, и обработчик контекста сделал это для меня :) – Mohibeyki

ответ

12

Просто добавьте обработчик контекста, который добавит эту переменную в контекст. Процессор контекста является простой функцией питона

def navbar(request): 
    return {'navbar_enabled': request.GET.get('nv', False) 

и добавить его в список шаблонов контекстных процессоров

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'MODULE_NAME.navbar', 
    ... 
) 
+3

Если вы используете новую настройку 'TEMPLATES' В Django 1.8+ установите опцию' context_processors' в настройке 'TEMPLATES', а не' TEMPLATE_CONTEXT_PROCESSORS'. – Alasdair

+0

У меня есть фильтр по запросу, который теперь сломан, мой запрос пустой строки, когда этот фильтр получает его! что не так? – Mohibeyki

+1

У меня это получилось, объект запроса больше не передается шаблонам с использованием нового объекта SETTINGS, я думаю, он должен был указывать на документы где-то https://docs.djangoproject.com/en/1.8/ref/ settings/# std: setting-TEMPLATES – Mohibeyki

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