如何计算用户登录的次数?

时间:2015-02-21 21:11:18

标签: python django django-models

我希望获得有关我网站每个用户的详细统计信息 如何计算每个用户登录的次数?

Python.V = 3.4 Django.V = 1.7

在我的models.py

我只是扩展了用户的模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    age = models.IntegerField(max_length=2, blank=True, validators=[MinValueValidator(3), MaxValueValidator(99)])
    birth_day = models.DateField(default=date(2015, 1, 1))
    location = models.CharField(max_length=300, blank=True)
    gender = models.CharField(max_length=1, choices=SEX, default='N')
    about_me = models.CharField(max_length=40, blank=True)
    #other fields here

    def __str__(self):
        return "%s's profile" % self.user

1 个答案:

答案 0 :(得分:1)

您可以向UserProfile模型添加新字段,以存储用户成功登录的次数,然后收听user_logged_in信号。

from django.contrib.auth.signals import user_logged_in

class UserProfile(models.Model):
    ...
    login_count = models.PositiveIntegerField(default=0)

def login_user(sender, request, user, **kwargs):
    user.userprofile.login_count = user.userprofile.login_count + 1
    user.userprofile.save()

user_logged_in.connect(login_user)

请注意,它仅计算实际的login操作,其中用户的上一个会话在访问您的网站时已过期。如果会话有效,他将不必再次登录,因此login_count将不会递增。

因此,如果您想在用户打开浏览器时登录用户,您可以告诉会话框架在 settings.py 文件中设置browser-length cookie

SESSION_EXPIRE_AT_BROWSER_CLOSE = True