Как мога да предам променливи към изглед с помощта на контекстен процесор?

Използвам контекстен процесор, за да предам няколко променливи към всички мои шаблони. Въпреки това бих искал да използвам тези променливи в действителните изгледи, които изобразяват съответните шаблони. Трябва ли да ги добавя към обекта на сесията на обекта на заявката или към самия обект на заявката (ако изобщо е възможно)?


person Hekje    schedule 04.03.2012    source източник


Отговори (2)


Използвайте RequestContext:

def my_view(request):
    c = RequestContext(request)
    # c['key'] gets the value for 'key' from your context processor.
    return render_to_response('template.html', {}, context_instance = c)
person Gareth Rees    schedule 04.03.2012
comment
Можете да използвате direct_to_template вместо render_to_response. Той автоматично ще извика RequestContext. - person jobima; 28.07.2016

Не можете ли просто да получите препратка към контекстния процесор и да го извикате във вашите изгледи? От това, което прочетох в документите, няма нищо специално за контекстния процесор:

Контекстният процесор има много прост интерфейс: това е просто функция на Python, която приема един аргумент, обект HttpRequest, и връща речник, който се добавя към контекста на шаблона. Всеки контекстен процесор трябва да върне речник.

Персонализираните контекстни процесори могат да живеят навсякъде във вашата кодова база. Всичко, което интересува Django, е вашите потребителски контекстни процесори да бъдат насочвани от вашата настройка TEMPLATE_CONTEXT_PROCESSORS.

Можете да имате достъп на всеки изглед до тях в началото, като му предадете параметъра request или може би да създадете декоратор, който да го инжектира във вашите изгледи вместо вас (каквото и да е по-лесно във вашия случай).

person mgibsonbr    schedule 04.03.2012