Comment obtenir la liste des utilisateurs authentifiés?
Je voudrais afficher la liste des utilisateurs authentifiés.
Sur la documentation: http://docs.djangoproject.com/en/dev/topics/auth/
modèles de la classe.L'utilisateur
is_authenticated()¶
Retourne toujours True. C'est une manière de savoir si l'utilisateur a été authentifié. ...
Vous pouvez savoir sur le modèle côté est de la actuel Utilisateur est authentifié ou non:
{% si l'utilisateur.is_authenticated %}
{% endif %}
Mais je n'ai pas trouvé le moyen de l'obtenir la liste des utilisateurs authentifiés.
Une idée?
Vous devez vous connecter pour publier un commentaire.
Va de pair avec rz de réponse, vous pouvez interroger le
Session
modèle pour les non-sessions expirées, puis tourner à la session de données sur les utilisateurs. Une fois que vous avez que vous pouvez le transformer en un modèle de balise qui pourrait rendre la liste sur une page donnée.(C'est tout pas testé, mais j'espère qu'il va être proche de travail).
Chercher tous les utilisateurs connectés...
En utilisant cela, vous pouvez faire une simple inclusion balise de modèle...
logged_in_user_list.html
Puis dans votre page principale, vous pouvez simplement l'utiliser où vous le souhaitez...
MODIFIER
Pour ceux qui parle 2-semaine de problème persistant, je suis en supposant que toute personne souhaitant avoir une "utilisateurs actifs" type de l'inscription sera de rendre l'utilisation de la
SESSION_EXPIRE_AT_BROWSER_CLOSE
paramètre, si je reconnais que ce n'est pas toujours le cas.get_all_logged_in_users
pour obtenir d'utilisateurs actifs, mais il cesse de fonctionner il y a quelques jours? à l'aide dePython(2.7)
etDjango(1.11)
.Plus fiable solution serait la chose que vous magasin lorsque l'utilisateur se connecte ou se déconnecte. J'ai vu cette solution, et je pense que sa vaut la peine de partager.
models.py
views.py
logged_users=[user.user for user in LoggedUser.objects.all()]
Il n'est pas facile, moyen intégré pour faire ce que vous voulez que je connais. J'avais essayer une combinaison de l'expiration des sessions et du filtrage last_login. Peut-être même écrire un custom manager pour que.
Sons identiques, avec cette solution, vous pouvez créer un middleware pour le faire. Je l'ai trouvé génial
OnlineNowMiddleware
ici.Où vous pourrez obtenir ces;
{{ request.online_now }}
=> afficher toute la liste des utilisateurs en ligne.{{ request.online_now_ids }}
=> affichage de tous les utilisateurs en ligne, id.{{ request.online_now.count }}
=> afficher le nombre total des utilisateurs en ligne.Comment mettre en place?
De créer le fichier
middleware.py
où l'emplacement desettings.py
a été enregistré, par exemple:Puis la suite de ces lignes;
Enfin de mettre à jour votre
MIDDLEWARE
à l'intérieur du fichier deprojectname/projectname/settings.py
:Pour d'autres conditions, vous pouvez également vérifier le courant de l'utilisateur est en ligne ou pas avec:
ONLINE_THRESHOLD
. Donc, une fois que les utilisateurs de signer pour60 * 15
=> 15 minutes automatiquement supprimé deonline_now
.setInterval
. par exemple: pastebin.com/3xVFpJiB