интригующее поведение сохранения сессии Django - PullRequest
1 голос
/ 18 марта 2012

Если я очищаю свои куки и запускаю это представление, я получаю новый ключ сессии при каждой загрузке страницы.

Если я закомментирую печать и выведу ключ сеанса в шаблоне, новый ключ сеанса при каждой загрузке.

Если я печатаю сеансовый ключ как в виде, так и в шаблоне, сеансовый ключ «сохраняется» и остается неизменным при каждой загрузке страницы.

def view_session(request):
    print request.session.session_key
    return render(request, "view_session.html", {})

Так, как объяснить это поведение?

Это не просто два чтения, так как я могу дважды печатать в представлении и по-прежнему получать новые ключи.

1 Ответ

3 голосов
/ 18 марта 2012

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

Чтобы изменить это поведение по умолчанию, установитедля параметра SESSION_SAVE_EVERY_REQUEST установлено значение True.При значении True Django будет сохранять сеанс в базе данных при каждом отдельном запросе.

Обратите внимание, что cookie сеанса отправляется только тогда, когда сеанс был создан или изменен.Если SESSION_SAVE_EVERY_REQUEST имеет значение True, cookie-файл сеанса будет отправляться при каждом запросе.

С при сохранении сеансов .

...