2 вопроса о сессиях Джанго - PullRequest
0 голосов
/ 09 декабря 2010

У меня две проблемы.Поскольку они связаны друг с другом, я спрашиваю их в одном посте.

1) Является ли хорошей практикой интенсивное использование сессий в приложении Django?Я сделал приложение викторины, где каждый вопрос сделан на лету и сохранен в сессии.Когда пользователь отвечает на первый вопрос, второй вопрос генерируется и сохраняется в той же переменной сеанса, что и первый, и так далее.Я также использую сессии для отслеживания количества правильных ответов, ответов на вопросы, идентификатора следующего вопроса и некоторых других переменных.Из всех приложений django, которые я видел, мое, хотя и небольшое, заполнено запросом.Это нормально?Или вы предлагаете лучший способ?

2) Так как это приложение полностью основано на сеансах, если я открою новую вкладку в том же браузере и введу URL-адрес викторины, оно будет выбрано откудадругая вкладка была оставлена.Как я могу запретить вкладкам видеть друг друга?

Спасибо

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

1) Является ли хорошей практикой интенсивное использование сессий в приложении Django?

Я думаю, вам следует переформулировать свой вопрос, чтобы рассмотреть вопрос о том, подходит ли сама природа сессийза то, что вы пытаетесь достичь.Поймите как сеансы работают в Django.Идентификатор сеанса хранится в cookie, поэтому в основном время жизни и поведение сеанса напрямую зависят от характера файлов cookie.

Помните о себе как о пользователе, который не понимает, когдаи как (или даже если) куки используются.Если вы в конечном итоге говорите: «Мне все равно, если система не запомнит меня по какой-то абстрактной технической причине (например, закрытие моего браузера, сброс настроек вручную путем очистки истории моего браузера и случайного удаления файлов cookie и т. Д.)».тогда сессия может быть хорошей отправной точкой.

ИМХО, Django упрощает хранение вопросов в базе данных, так что я обычно хожу на создание учетной записи и использование базы данных, не задавая себе вопроса.

2) Поскольку все это приложение основано на сеансах, ... Как я могу запретить вкладкам видеть друг друга?

Тогда вам не следует использовать сеансы Django, потому что они основанына печенье, которые являются реальным виновником этого поведения.Поскольку это вопрос типа викторины, я предполагаю, что у вас есть как минимум 1 форма на каждой странице.Сгенерируйте какой-нибудь собственный идентификатор сеанса и сохраните его в скрытом поле формы.Вы также можете сохранить его в строке запроса, но это не совсем "Django-ish".

0 голосов
/ 09 декабря 2010

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

Вы всегда можете использовать параметр URL (хранится в request.GET), чтобы различать вкладки браузера; если новая страница загружается без параметра URL, создайте случайное значение и перенаправьте на URL со случайным значением, добавленным в качестве параметра URL. Используйте значение параметра URL как часть структуры ключа сеанса, чтобы дифференцировать данные вкладки браузера.

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