Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » посчитать -- гости и рег юзеры -- онлайн [RSS Feed]

#1 Апрель 8, 2009 14:39:54

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

посчитать -- гости и рег юзеры -- онлайн

Hi.

Интересует следующий вопрос:
какие способы существуют чтобы реализовать механизм учета пользователей для отображения например: “Сейчас на сайте 10 пользователей 4 зарегистрироавный 6 гостей”
Может существуют готовые апликухи или снипеты, алгоритмы.
Что я думаю как можно реализовать это – использовать сессии, но сначала хотел спросить об этом так как вопрос для меня нов.

Искал на гугле но та все по пыхе. А какие решения есть для джанги?

Офлайн

#2 Апрель 8, 2009 14:56:00

iceeq
От:
Зарегистрирован: 2009-03-21
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

посчитать -- гости и рег юзеры -- онлайн

Офлайн

#3 Апрель 8, 2009 15:20:27

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

посчитать -- гости и рег юзеры -- онлайн

Вот тут есть неплохое решение: http://softwaremaniacs.org/forum/django/624/



Офлайн

#4 Май 3, 2009 20:11:45

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

посчитать -- гости и рег юзеры -- онлайн

Daevaorn
Вот тут есть неплохое решение: http://softwaremaniacs.org/forum/django/624/
Имеется ввиду решение предложенное msamoylov ?

Офлайн

#5 Май 4, 2009 19:14:21

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

посчитать -- гости и рег юзеры -- онлайн

писал для 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)
один момент не совсем DRY.. ну да ладно)
#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)
а с тредом на форуме маньяка не согласен - юзать тут базу имхо не стоит

Офлайн

  • Начало
  • » Django
  • » посчитать -- гости и рег юзеры -- онлайн[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version