Форум сайта python.su
Есть блок, отображающийся на каждой странице. Блок решил отображать через 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})
Офлайн
from django.template import RequestContext
...
return render_to_response('Base.html', {'posts':posts, 'form': form, 'logStat': logStat,}, context_instance=RequestContext(request))
#user можно не передавать он будет доступен как request.user
Отредактировано (Ноя. 12, 2011 22:44:16)
Офлайн
pill, большое спасибо, это как раз то, что мне было нужно! Действительно, вместо передачи данных в inclusion_tag, обсчитывать их в RequestContext куда удобнее. И да, обошелся include :)
Отредактировано (Ноя. 13, 2011 15:45:12)
Офлайн