Използвам контекстен процесор, за да предам няколко променливи към всички мои шаблони. Въпреки това бих искал да използвам тези променливи в действителните изгледи, които изобразяват съответните шаблони. Трябва ли да ги добавя към обекта на сесията на обекта на заявката или към самия обект на заявката (ако изобщо е възможно)?
Как мога да предам променливи към изглед с помощта на контекстен процесор?
Отговори (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)
Не можете ли просто да получите препратка към контекстния процесор и да го извикате във вашите изгледи? От това, което прочетох в документите, няма нищо специално за контекстния процесор:
Контекстният процесор има много прост интерфейс: това е просто функция на Python, която приема един аргумент, обект HttpRequest, и връща речник, който се добавя към контекста на шаблона. Всеки контекстен процесор трябва да върне речник.
Персонализираните контекстни процесори могат да живеят навсякъде във вашата кодова база. Всичко, което интересува Django, е вашите потребителски контекстни процесори да бъдат насочвани от вашата настройка TEMPLATE_CONTEXT_PROCESSORS.
Можете да имате достъп на всеки изглед до тях в началото, като му предадете параметъра request
или може би да създадете декоратор, който да го инжектира във вашите изгледи вместо вас (каквото и да е по-лесно във вашия случай).