Форум сайта python.su
Hi.
Интересует следующий вопрос:
какие способы существуют чтобы реализовать механизм учета пользователей для отображения например: “Сейчас на сайте 10 пользователей 4 зарегистрироавный 6 гостей”
Может существуют готовые апликухи или снипеты, алгоритмы.
Что я думаю как можно реализовать это – использовать сессии, но сначала хотел спросить об этом так как вопрос для меня нов.
Искал на гугле но та все по пыхе. А какие решения есть для джанги?
Офлайн
Офлайн
Вот тут есть неплохое решение: http://softwaremaniacs.org/forum/django/624/
Офлайн
DaevaornИмеется ввиду решение предложенное msamoylov ?
Вот тут есть неплохое решение: http://softwaremaniacs.org/forum/django/624/
Офлайн
писал для DjangoBB вроде работает)
#middleware.py
class UsersOnline(object):
def process_request(self, request):
now = datetime.now()
delta = now - timedelta(minutes=forum_settings.USER_ONLINE_TIMEOUT)
users_online = cache.get('users_online', {})
guests_online = cache.get('guests_online', {})
if request.user.is_authenticated():
users_online[request.user.id] = now
else:
guest_sid = request.COOKIES.get(global_settings.SESSION_COOKIE_NAME, '')
guests_online[guest_sid] = now
for user_id in users_online.keys():
if users_online[user_id] < delta:
del users_online[user_id]
for guest_id in guests_online.keys():
if guests_online[guest_id] < delta:
del guests_online[guest_id]
cache.set('users_online', users_online, 60*60*24)
cache.set('guests_online', guests_online, 60*60*24)
#view.py
#...
users_cached = cache.get('users_online', {})
users_online = users_cached and User.objects.filter(id__in = users_cached.keys()) or []
guests_cached = cache.get('guests_online', {})
guest_count = len(guests_cached)
users_count = len(users_online)
Офлайн