2009-10-11 16 views
6

¿Hay alguna forma de rastrear usuarios activos en django?seguimiento django usuarios en línea recientes

he visto algunas soluciones en línea para el problema:

http://mpcabd.igeex.biz/get-online-users-in-django/

ser uno de esos. Pero parece bastante extraño modificar la estructura del modelo solo para resolver este simple problema. Me gustaría saber si hay alguna solución rápida.

El campo last_login de autenticación de Django tampoco es de mucha utilidad, ya que sólo registra el momento en que un usuario se conecta y el campo no se actualiza si el usuario ha estado en sesión durante mucho tiempo

Respuesta

4

soy yo el que escribió ese blog :)

que no modificó el modelo de usuario, extendí ella, es lo mismo que los perfiles, pero quería hacerlo de una manera que si usted ya ha definido un perfil, aún puede usar mi método.

Creo que la extensión del modelo de usuario es la mejor manera de manejarlo, no sé si hay algún punto en contra.

+0

ya estoy usando un modelo extendido. Lo que quería decir es que necesitaba obtener directamente el estado de usuario activo sin agregar "last_activity_ip" y "last_activity_date" al modelo.Pero su solución parece ser la mejor manera de hacerlo en tal situación. – saurabh

2

Modificación de la Auth User model probablemente no sea un enfoque muy "flexible".

La forma más sencilla de hacerlo sería proporcionar un perfil: Django tiene un soporte integrado para proporcionar un modelo de perfil de usuario para almacenar datos adicionales relacionados con el usuario sin necesidad de modificar ninguno de los modelos incorporados.

Ver Django manual

Usted simplemente almacenar la última vez activo en el perfil del usuario.

4

Estoy de acuerdo en que la mejor manera de hacerlo sería utilizar un perfil. Esto tendría una clave externa a la tabla Usuarios en lugar de modificar la tabla existente.

En términos de cómo registrar las acciones del usuario, un patrón podría ser escribir un decorador que envuelva todas las vistas que desea grabar. El decorador simplemente registraría el tiempo y la acción contra el perfil del usuario relevante.

0

Pruebe esta solución:

  1. Crear un modelo como el 'perfil' usando user.id como una clave externa
  2. Crear una vista de perfil, cuando el usuario inicia sesión, cambiar el estado de offline a línea

    • también puede utilizar la vista, para comprobar los últimos usuarios conectados 'X' minutos
  3. manija cuando la ventana está cerrada con jQuery, o cuando se registra a cabo de la 'vista de perfil' para cambiar el estado de en línea a fuera de línea

Cuestiones relacionadas