2009-10-11 7 views
6

Existe-t-il un moyen de suivre les utilisateurs actifs dans django?django suivi des utilisateurs en ligne récents

J'ai vu quelques solutions en ligne au problème:

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

étant l'un d'entre eux. Mais il semble plutôt étrange de modifier la structure du modèle juste pour résoudre ce problème simple. J'aimerais savoir s'il existe une solution rapide.

Le champ last_login dans django auth est pas non plus d'une grande utilité, car il enregistre seulement le moment où un utilisateur se connecte et le champ ne sont pas mis à jour si l'utilisateur a été en session depuis longtemps

Répondre

4

Je suis celui qui a écrit ce blog :)

Je n'ai pas modifié le modèle de l'utilisateur, j'étendu, il est le même que les profils, mais je voulais le faire d'une manière que si vous avez déjà défini un profil, vous pouvez toujours utiliser ma méthode.

Je pense que l'extension du modèle User est la meilleure façon de le gérer, je ne sais pas s'il y a des points contre cela.

+0

J'utilise déjà un modèle étendu. Ce que je voulais dire, c'est que je devais obtenir directement le statut d'utilisateur actif sans ajouter "last_activity_ip" et "last_activity_date" au modèle.Mais votre solution semble être la meilleure façon de procéder dans une telle situation. – saurabh

2

Modification de la Le modèle d'utilisateur n'est probablement pas une approche très "flexible". Le moyen le plus simple d'y parvenir serait probablement de fournir un profil - Django a un support intégré pour fournir un modèle de profil utilisateur pour stocker des données supplémentaires liées à l'utilisateur sans avoir à modifier aucun des modèles intégrés.

Voir Django manual

Vous simplement stocker la dernière fois actif dans le profil de l'utilisateur.

4

Je suis d'accord que la meilleure façon de le faire serait d'utiliser un profil. Cela aurait une clé étrangère à la table Users plutôt que de modifier la table existante.

En ce qui concerne la façon d'enregistrer les actions de l'utilisateur, un modèle peut être d'écrire un décorateur qui enveloppe toutes les vues que vous souhaitez enregistrer. Le décorateur enregistre simplement l'heure et l'action par rapport au profil de l'utilisateur concerné.

0

Essayez cette solution:

  1. Créer un modèle comme « profil » en utilisant user.id comme une clé étrangère
  2. Créer une vue de profil, lorsque l'utilisateur se connecte, changez l'état de hors-ligne à en ligne

    • Vous pouvez également utiliser la vue, pour vérifier les derniers utilisateurs connectés « X » minutes
  3. poignée lorsque la fenêtre est fermée avec jquery, ou quand est déconnecté du profil de vue »pour changer l'état de ligne hors ligne

Questions connexes