2015-03-16 4 views
2

У меня есть страница в Django, которая позволяет только одному пользователю видеть в одно и то же время. Есть ли способ получить эту информацию? Если я знаю, что кто-то посещает страницу, я могу заблокировать другие запросы.Есть ли способ узнать, как определенная страница посещается в Django?

спасибо.

+1

«один пользователь, чтобы видеть в то же время» - что вы имеете в виду? – Niyojan

+0

Скажите странице/тесту /, если пользователь A видит эту страницу, тогда никто другой не может видеть эту страницу, запрос будет заблокирован. Только после того, как A закрывает эту страницу, другие могут ее увидеть. – Haoliang

+1

Я не знаю, почему вы хотели бы сделать что-то подобное, но вы можете создать декоратор, который сохраняет флаг (в db) для каждого входа пользователя. Поэтому каждый раз, когда пользователь входит в систему, вы вызываете декоратор для обновления флага active_user и при выходе из системы вы можете его сбросить. Поэтому, если флаг установлен, вы можете перенаправить другие входящие логины на другую страницу (показывая, что сервер занят или что-то еще). надеюсь, это поможет – Niyojan

ответ

0

Используйте вашу базу данных как «рефери». Создайте класс, который наследуется от generic.TemplateView, переопределите метод get и/или post и перед вызовом родителя сделайте запрос к базе данных: если страница просматривается, не вызывайте родителя и не возвращайте перенаправление на главную страницу ,

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