Найти - Пользователи
Полная версия: Передать перменную request в inclusion_tag
Начало » Django » Передать перменную request в inclusion_tag
1
feather236
Есть блок, отображающийся на каждой странице. Блок решил отображать через inclusion tag. Дело в том, что этот блок должен принимать request.

Прочел, что есть способ — передавать каждый раз какое-то значение из request в качестве контекста (context). Но как по мне, такой способ не имеет смысла, ведь в любом случае мне придется теперь в каждую функцию прописывать код для этого блока. Более того, в моем блоке идет проверка на авторизацию пользователя (if request.user.is_authenticated()), и я без понятия как это передавать через контекст.

Вопрос: Как реализовать отображение этого блока на каждой странице (в моем случае — форма аутентификации) избежав повтора кода в функциях?

Вкратце, оригинальный код для блока выглядит приблизительно так:
def archive(request): #Код пока что в оригинальном виде, не переделанный под inclusive tag
form = LoginForm()
user = request.user
if request.user.is_authenticated():
logStat = "OK"
else:
logStat = "Not OK"
return render_to_response('Base.html', {'posts':posts, 'form': form, 'logStat': logStat, 'user':user})
pill
from django.template import RequestContext
...
return render_to_response('Base.html', {'posts':posts, 'form': form, 'logStat': logStat,}, context_instance=RequestContext(request))
#user можно не передавать он будет доступен как request.user
Теперь переменная request будет доступна в любом месте шаблона.
http://djangobook.com/en/1.0/chapter10/
https://docs.djangoproject.com/en/dev/topics/http/shortcuts/
http://lincolnloop.com/blog/2008/may/10/getting-requestcontext-your-templates/
http://softwaremaniacs.org/blog/2006/02/17/include-templates-with-vars/

PS: а может вам и не нужен inclusion_tag, а хватит простого include
feather236
pill, большое спасибо, это как раз то, что мне было нужно! Действительно, вместо передачи данных в inclusion_tag, обсчитывать их в RequestContext куда удобнее. И да, обошелся include :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB