Подтвердить что ты не робот

Django 1.5 Session Key отсутствует

По какой-то причине выполнение {{ request.session.session_key }} в шаблоне дает мне значение None. После некоторого поиска натолкнулся на этот пост, который упоминался с помощью request.session._session_id, но использование этого в шаблоне дает мне ошибку:

Переменные и атрибуты могут не начинаться с символов подчеркивания: 'Request.session._session_key'

Мое понимание сеансов в Django заключается в том, что в тот момент, когда пользователь загружает страницу (любую страницу), даже если он анонимный, session_id назначается этому конкретному сеансу. Является ли мое понимание неправильным, а также, где предполагается использование [SESSION_SAVE_EVERY_REQUEST]?

Я использую бэкэнд базы данных в качестве хранилища сеансов.

4b9b3361

Ответ 1

Чтобы ответить на мой собственный вопрос:

По-прежнему можно получить доступ к сеансовому ключу с помощью {{ request.session.session_key }}. Тем не менее, docs упоминают, что сеанс будет создан, только если вы сохранили/модифицировали сеанс.

По умолчанию Django сохраняет только базу данных сеанса при сеансе был изменен - ​​то есть, если какое-либо из его значений словаря было назначено или удалено:

Итак, в моем случае сеанс не был установлен, потому что я не манипулировал им. Использование SESSION_SAVE_EVERY_REQUEST действительно решит проблему глобально. В моем случае использования я только нуждался в ней в определенной функции просмотра, поэтому было просто сделать это:

if not request.session.get('has_session'):
    request.session['has_session'] = True