È il loro modo di conteggiare il numero di accessi django? Il campo last_login di auth_user viene aggiornato con ogni accesso. Possiamo utilizzare questo campo per contare il numero di accessi da parte di un utente specifico?numero di conteggi degli accessi da parte di un utente specifico django?
risposta
Sì, in un certo senso. Avrai bisogno di un campo nel modello UserProfile
della tua app per contenere il numero di accessi o un modello separato per la memorizzazione della cronologia di accesso completa. Quindi aggiungi i gestori di segnale per gli aggiornamenti last_login e registrali in un modello di tua scelta. Ecco il mio esempio:
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)
C'è anche una 'user_logged_in' segnale che farà il trucco con la necessità di verificare la presenza di ultimi dati di accesso, ecc
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)
Ho aggiunto questo bit al mio modello UserProfile, ma non sembra che si spari all'accesso utente (la tabella account_userlogin è stata creata tutte le idee? –
Questo è come ho fatto (usando django 1.7), simili a Guy Bowden risposta:
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)
Successivamente è possibile contare il numero di accessi, nelle viste.
Grazie, l'ho implementato ma sono bloccato su come contare il numero di accessi e visualizzarli nell'amministratore. Dovrei lavorare in admin.py, views.py, models.py? (django beginnner qui) – juminet
@juminet, il metodo che ho fornito, salva SOLO 'date_updated', 'action_type' e 'action_user', nel nostro database, quindi puoi contare 'action_type' per un utente specifico, usando django queryset (https: // docs .djangoproject .com/it/1.11/ref/models/querysets/# count). Quindi il tuo queryset dovrebbe apparire così: LoginUpdate.objects.filter (action_type = "Login", action_user = SPECIFIC_USER) .count() –
È possibile utilizzare django-timeStamps per memorizzare i tempi di accesso in corso. Un semplice strumento leggero.
- 1. Permesso specifico per l'accesso in scrittura da parte degli utenti
- 2. WSGI/Django: passa il nome utente ad Apache per il registro degli accessi
- 3. Numero di conteggi nel mese corrente
- 4. Trova richieste di pull unite da un utente specifico
- 5. Come leggere un numero specifico di byte da uno stream?
- 6. Memorizzazione di attività degli utenti in Django
- 7. Numero di conteggi di nodi di sinistra in BST
- 8. Numero di conteggi di una stringa all'interno di un'altra (Perl)
- 9. Collegamento accessi esterni a utente esistente
- 10. trovare l'intera parte numerica di un numero
- 11. Best practice in Programmazione degli accessi
- 12. Controllo degli accessi basato sui ruoli
- 13. Arresta un commit git da parte di un autore specifico usando il gancio di pre-commit
- 14. SQL: numero di conteggi di valori distinti in ogni colonna
- 15. jQuery numero di conteggi di div con una determinata classe?
- 16. Tieni traccia del numero di "visualizzazioni di pagina" o "accessi" di un oggetto?
- 17. Come misurare l'utilizzo di applicazioni desktop da parte degli utenti?
- 18. Elenco degli ID dei messaggi leggibili da parte di pylint?
- 19. Come trovare i commit da un utente specifico in Git?
- 20. loop fino a quando un utente specifico ingresso
- 21. Generazione di un numero di serie specifico del dispositivo
- 22. Numero di conteggi PHP in una matrice booleana
- 23. come ottenere l'oggetto di connessione di un utente specifico?
- 24. Come rimuovere la parte decimale da un numero in C#
- 25. seleziona il numero totale di conteggi() per anno e mese?
- 26. Controllo degli accessi basato sui ruoli con Spring MVC
- 27. Come leggere un numero intero da utente in Rust 1.0?
- 28. Librerie avanzate di controllo accessi
- 29. Implementazione di Mergesort .. Numero di conteggi di inversioni in un array
- 30. Come posso rilevare più accessi in un'applicazione web Django da posizioni diverse?
grazie al suo funzionamento perfetto. – Sujit
È una questione di stile, ma dove lo inseriresti in django (quale file?). Vuoi creare una nuova app? Grazie. – Roger
'UserProfile' va a' models.py', il gestore di segnale va a 'listeners.py', entrambi nell'applicazione principale. –