在Django中创建详细视图的页面访问者计数

2024-09-30 14:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图收集与每个页面视图细节相关的每个访问者计数的数据

我已经实现了统计页面访问者的功能,但每次刷新页面时,都会添加一个不准确的视图。我的问题是如何添加到函数IP address中,以显示它是否存在,从计数中忽略它,并且访客计数仅与新访客相关

这是模型

class Post(models.Model):
    user= models.ForeignKey(User, on_delete=models.CASCADE)
    --------------------------------------------------
    title = models.CharField(max_length=100, unique=True)
    viewCount=models.IntegerField(default=0)

    def __str__(self):
        return self.title

    def incrementViewCount(self):
        self.viewCount += 1
        self.save()

这是views.py

    def get(self, request, *args, **kwargs):
        res = super().get(request, *args, **kwargs)
        self.object.incrementViewCount()
        return res

Tags: self视图getreturntitlemodelsrequestdef
1条回答
网友
1楼 · 发布于 2024-09-30 14:22:02

您可以获取用户IP,并检查该IP是否已在当天计算

正在Django中获取用户IP地址:

def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip

然后,您必须添加一个日期字段并以IP为基础保存访问, i、 e.您将有包含列IP、日期->;然后,只需计算当天(天数)或整个时间内有多少不同的IP

例如

IP              | Date
239.123.191.194   2020-07-27
239.183.192.181   2020-07-27

伪查询->Select count(IP) where Date = "2020-07-27"->;二,

或者您可以查看django-tracking2或https://github.com/thornomad/django-hitcount->;这些库可以完成您需要的所有事情,而且实现起来非常简单

相关问题 更多 >