Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 10, 2011 20:18:29

feather236
От:
Зарегистрирован: 2011-10-22
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Передать перменную request в inclusion_tag

Есть блок, отображающийся на каждой странице. Блок решил отображать через 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})



Офлайн

#2 Ноя. 12, 2011 22:37:00

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

Передать перменную request в inclusion_tag

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



Отредактировано (Ноя. 12, 2011 22:44:16)

Офлайн

#3 Ноя. 13, 2011 15:43:25

feather236
От:
Зарегистрирован: 2011-10-22
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Передать перменную request в inclusion_tag

pill, большое спасибо, это как раз то, что мне было нужно! Действительно, вместо передачи данных в inclusion_tag, обсчитывать их в RequestContext куда удобнее. И да, обошелся include :)



Отредактировано (Ноя. 13, 2011 15:45:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version