他們有什麼方法計算Django登錄的數量? auth_user的last_login字段會隨每次登錄更新。 我們可以利用該字段來統計特定用戶的登錄次數嗎?計算特定用戶django登錄的次數?
回答
是的,從某種意義上說。您需要在應用的UserProfile
模型中有一個字段用於保存登錄次數或用於存儲完整登錄歷史記錄的單獨模型。然後爲last_login更新添加信號處理程序,並將其記錄在您選擇的模型中。這是我的例子:
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)
還有一個「user_logged_in」信號會做的伎倆有,有必要檢查最後登錄等
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)
我將此位添加到我的UserProfile模型,但它似乎並沒有觸發用戶登錄(account_userlogin table is created )。任何想法? –
這是我如何做(使用Django 1.7),類似於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)
之後你可以統計你的視圖中登錄的次數。
謝謝,我實現了它,但我堅持如何計算登錄數,並將它們顯示在管理員。我應該在admin.py,views.py,models.py?(django beginnner在這裏) – juminet
@juminet,我提供的方法,只在數據庫中保存'date_updated','action_type'和'action_user',然後你可以使用django queryset(https:// docs)爲特定用戶計算'action_type' .djangoproject .com/en/1.11/ref/models/querysets /#count)。所以你的查詢集應該看起來像這樣:LoginUpdate.objects.filter(action_type =「Login」,action_user = SPECIFIC_USER).count() –
您可以使用django-timeStamps來存儲瑞速登錄時間。一個簡單的輕量級工具。
- 1. 計數次用戶登錄
- 2. 計算mysql中特定用戶的總登錄 - 註銷時間
- 3. 計數登錄次數超過一次的唯一用戶數
- 4. 已登錄用戶的稅收計算
- 5. 在django中登錄後創建用戶特定的重定向
- 6. 設計與計算/操作的用戶名參數登錄
- 7. 如何在登錄django後將用戶重定向到用戶特定的url?
- 8. 用於登錄用戶特定資源的良好URI設計
- 9. 每次登錄的用戶數量每週計數
- 10. 我如何計算用戶在PHP中連續登錄的次數
- 11. Django的 - 多次登錄重定向
- 12. 顯示特定的登錄用戶名
- 13. 確定在遠程Windows計算機上登錄的用戶
- 14. 確定AD中的計算機是否有用戶登錄
- 15. 在postgresql中每天計算不同且獨特的用戶登錄數
- 16. Django自定義用戶管理登錄
- 17. 登錄用戶使用django
- 18. 獲取用戶登錄的次數UNIX
- 19. 跟蹤用戶登錄的次數?
- 20. 使用特定值計算函數調用的次數
- 21. 用特定用戶登錄Laravel 4
- 22. Django管理登錄特定的URL
- 23. 統計所有用戶的登錄次數
- 24. 計算登錄身份驗證時的用戶數
- 25. 如何編寫查詢來計算用戶登錄的天數?
- 26. 審計登錄的用戶
- 27. Django:限制用戶一次登錄一次
- 28. django用戶登錄視圖
- 29. Django + Foursquare OAuth +用戶登錄
- 30. Django,記住用戶登錄
感謝它的完美工作。 – Sujit
這是一個風格問題,但你會把它放在django(哪個文件?)。你會創建一個新的應用程序?謝謝。 – Roger
'UserProfile'轉到'models.py',信號處理程序轉到'listeners.py',兩者都在你的主應用程序中。 –