我希望获得有关我网站每个用户的详细统计信息 如何计算每个用户登录的次数?
Python.V = 3.4 Django.V = 1.7
我只是扩展了用户的模型:
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
答案 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