Найти - Пользователи
Полная версия: посчитать -- гости и рег юзеры -- онлайн
Начало » Django » посчитать -- гости и рег юзеры -- онлайн
1
romankrv
Hi.

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

Искал на гугле но та все по пыхе. А какие решения есть для джанги?
Александр Кошелев
Вот тут есть неплохое решение: http://softwaremaniacs.org/forum/django/624/
romankrv
Daevaorn
Вот тут есть неплохое решение: http://softwaremaniacs.org/forum/django/624/
Имеется ввиду решение предложенное msamoylov ?
slav0nic
писал для 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)
а с тредом на форуме маньяка не согласен - юзать тут базу имхо не стоит
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB