Django: Управление переменными сеанса для управления кнопкой возврата браузера - PullRequest
0 голосов
/ 17 августа 2010

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

Потребности: На каждый вопрос можно ответить и ответить только один раз.Все это вопросы с несколькими вариантами ответов. После ответа на вопрос и нажатия кнопки «Отправить» этот сеанс должен истечь, и этот же вопрос не должен появляться ни с помощью кнопки «Назад», ни каким-либо другим способом.

В случае сбоя браузера илиСбои системы, студент должен иметь возможность вернуться к последнему вопросу, на который пытались ответить, но на который еще не ответили и не отправили.

Какую стратегию лучше всего принять при ее реализации в Django.Как автоматически убить сеанс после нажатия кнопки «Отправить»?И как вы гарантируете, что, нажав кнопку «назад», вы не сможете получить доступ к вопросу, на который пытались ответить, и ответили?

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

1 Ответ

3 голосов
/ 17 августа 2010

А как вы гарантируете, что, нажав кнопку «Назад», вы не сможете получить доступ к вопросу, на который попытались ответить, или ответили?

Post-Redirect-Get.http://en.wikipedia.org/wiki/Post/Redirect/Get

Как автоматически убить сеанс после нажатия кнопки отправки?

Не имеет смысла.Вам не нужно «убивать» сеанс.Вам нужно сделать две вещи.

  1. Обновить запись в базе данных для этого пользователя, чтобы указать, как далеко они продвинулись.

  2. Обновить сеансчтобы показать, как далеко они продвинулись.

Не пытайтесь «убить» сеанс.Сохраняйте правильность информации о сеансе (и соответствующей базе данных).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...