¿Hay alguna manera de contar el número de inicios de sesión de django? El campo last_login de auth_user se actualiza con cada inicio de sesión. ¿Podemos hacer uso de ese campo para contar el número de inicios de sesión de un usuario específico?cuenta el número de inicios de sesión por usuario específico django?
Respuesta
Sí, en cierto sentido. Necesitará un campo en el modelo UserProfile
de su aplicación para mantener el número de inicios de sesión o un modelo separado para almacenar el historial de inicio de sesión completo. A continuación, agregue manejadores de señal para las actualizaciones last_login y regístrelos en un modelo de su elección. Aquí está mi ejemplo:
from django.db import models, signals
from django.contrib.auth.models import User
class UserLogin(models.Model):
"""Represent users' logins, one per record"""
user = models.ForeignKey(user)
timestamp = models.DateTimeField()
def user_presave(sender, instance, **kwargs):
if instance.last_login:
old = instance.__class__.objects.get(pk=instance.pk)
if instance.last_login != old.last_login:
instance.userlogin_set.create(timestamp=instance.last_login)
signals.pre_save.connect(user_presave, sender=User)
También hay un 'user_logged_in' señal que va a hacer el truco con la necesidad de comprobar si hay últimos inicios de sesión etc.
class UserLogin(models.Model):
"""Represent users' logins, one per record"""
user = models.ForeignKey(user)
timestamp = models.DateTimeField()
from django.contrib.auth.signals import user_logged_in
def update_user_login(sender, user, **kwargs):
user.userlogin_set.create(timestamp=timezone.now())
user.save()
user_logged_in.connect(update_user_login)
Agregué este bit a mi modelo UserProfile, pero no parece estar encendiendo en el inicio de sesión del usuario (se crea la tabla account_userlogin). ¿Alguna idea? –
Esta es la forma en que lo hice (usando Django 1.7), similar a la respuesta de Guy Bowden:
from django.contrib.auth.models import User
from django.contrib.auth.signals import user_logged_in
class LoginUpdate(models.Model):
date_updated = models.DateTimeField(auto_now_add=True, null=True)
action_type = models.CharField(max_length=5)
action_user = models.ForeignKey(User, null=True, blank=True)
def update_user_login(sender, **kwargs):
user = kwargs.pop('user', None)
LoginUpdate.objects.create(action_type="Login", action_user=user)
user_logged_in.connect(update_user_login, sender=User)
Más tarde se puede contar el número de inicios de sesión, en sus puntos de vista.
Gracias, la implementé pero estoy atascado en cómo contar el número de inicios de sesión, y mostrarlos en el administrador. ¿Debo trabajar en admin.py, views.py, models.py? (django beginnner aquí) – juminet
@juminet, el método que proporcioné, SÓLO guarda 'date_updated', 'action_type' y 'action_user', en nuestra base de datos. Luego puedes contar 'action_type' para un usuario específico, usando django queryset (https: // docs .djangoproject .com/es/1.11/ref/models/querysets/# count). Por lo tanto, su queryset debería tener el siguiente aspecto: LoginUpdate.objects.filter (action_type = "Login", action_user = SPECIFIC_USER) .count() –
Puede usar django-timeStamps para almacenar los tiempos de inicio de sesión. Una herramienta simple y liviana.
- 1. inicios de sesión Dyango para múltiples usuarios: ¿el mejor enfoque?
- 2. En el sitio asp.net cómo prevenir múltiples inicios de sesión de la misma identificación de usuario?
- 3. bloqueo de cuenta de Django
- 4. Google inicios de sesión múltiples: ¿hay alguna manera de especificar la cuenta en la URL?
- 5. ¿Debería preocuparse por cuentas falsas/inicios de sesión en un sitio web?
- 6. Django: ¿señal cuando el usuario inicia sesión?
- 7. ¿Cómo puedo detectar varios inicios de sesión en una aplicación web de Django desde diferentes ubicaciones?
- 8. Consulta SQL para inicios de sesión
- 9. cerrar sesión programáticamente un usuario "específico"
- 10. inicios de sesión de múltiples usuarios en jmeter
- 11. Autenticación reposada: ¿permite inicios de sesión de varias computadoras?
- 12. Registro de inicios de sesión con Spring Security
- 13. Transacciones por sesión en Django
- 14. Prueba de carga web VS2010 con inicios de sesión de usuario
- 15. Contar inicios y cierres de sesión en la computadora Windows 7
- 16. Cómo prevenir múltiples inicios de sesión en el sitio web de PHP
- 17. ¿Cómo asocian los sitios de StackExchange las cuentas de usuario y los inicios de sesión de OpenID?
- 18. ¿Puede una intranet PHP compartir inicios de sesión de Windows?
- 19. Ejecución de ColdFusion como usuario específico
- 20. Symfony2: ¿Cómo mostrar el nombre de la cuenta de administrador al suplantar la cuenta de usuario?
- 21. Los inicios de sesión deben ser una página https
- 22. Buen marco para inicios de sesión en PHP
- 23. Detectar si una cuenta de usuario de Active Directory está bloqueada mediante LDAP en Python
- 24. Cuenta Seq número de elementos
- 25. Al usar subdominios para un sitio de Django, ¿cómo puede compartir los inicios de sesión de django en los subdominios en el host local?
- 26. Número de cuenta del tipo de archivo específico de un directorio y su subdirectorio en mac
- 27. ¿Cómo iniciar sesión en el usuario de la sesión en Django?
- 28. htaccess permite el acceso al usuario específico
- 29. crear cuenta de usuario local
- 30. Soltar todos los inicios de sesión donde nombre de inicio de sesión como
gracias a que funciona perfectamente. – Sujit
Es una cuestión de estilo, pero ¿dónde pondrías esto en django (qué archivo?). ¿Crearías una nueva aplicación? Gracias. – Roger
'UserProfile' va a' models.py', el manejador de señal va a 'listeners.py', ambos en su aplicación principal. –