Найти - Пользователи
Полная версия: Пропала переменная request в шаблонах Django.
Начало » Django » Пропала переменная request в шаблонах Django.
1
Ryo
Предисловие.

Приложение требует предварительной авторизации (страничка авторизации расположена по “/index” или “/”). При попытке зайти на любую другую страничку (в нижеприведенном примере - на http://megatool.com/search?….), @login_required перенаправляет пользователя на “/”, с адресной строкой вроде:
http://megatool.com?next=/search%3Fcsrfmiddlewaretoken%3D1sO8ChOa7C7mjlPIvZ9Dw7eCsECKOczk%26aim%3Dmaster%253APAAAAhywAAA%253D%253D%26radioEnv%3Dmain
храня в параметре next остальные параметры GET-запроса первоначальной ссылки.

В шаблоне авторизации присутствует поле:
<input type="hidden" id="id_redirect" name="redirect" value="{{ request.GET.next }}">
которое хранит параметр next для последующей обработки в форме. Соответственно, в классе формы авторизации присутствует:
    redirect = forms.CharField(required=False)
обрабатываемый впоследствии в представлении.

Проблема

Все вышеописанное прекрасно работает для сервера разработчика, но перестало работать на Apache. В разборе полетов выяснилось, что сбоит шаблонизатор - {{ request.GET.next }}, а также пробный {{ request }} в сгенерированном HTML преобразуются в пустую строку.

В связи с этим пара вопросов:
- с чем это связано?
- если на первый вопрос ответов нет, то как можно принудительно передать в шаблон параметры (тот же HTTPRequest), если соответствующее представление вызывается автоматически через @login_required?

Спасибо.
FishHook
А вы RequestContext в render_to_response передаёте?
Ryo
FishHook
А вы RequestContext в render_to_response передаёте?
Блин, я протупил редкостно. Действительно, можно же банально контекстом в рендер передать тот же request. Спасибо!

Правда, вопрос, почему на Апаче он перестает передаваться автоматом в шаблон, остается открытым, но то уже дело такое…
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