ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-装饰器实现pv-uv

2021-05-20 17:07:58  阅读:156  来源: 互联网

标签:count pv python IP uv 访问 models 网站


网站流量统计可以帮助我们分析网站的访问和广告来访等数据,里面包含很多数据的,比如访问试用的系统,浏览器,ip归属地,访问时间,搜索引擎来源,广告效果等。原来是一样的,这次先实现了PV,UV,IP三个重要指标的统计。

        PV(访问量):Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。

  UV(独立访客):Unique Visitor,一般使用cookie标记,访问您网站的一台电脑客户端(比如一台电脑开多个浏览器访问则为多个UV)为一个访客,00:00-24:00内相同的客户端只会被计算一次。

  IP(独立IP):指独立IP数。00:00-24:00内相同IP地址之被计算一次(多台电脑可能共用一个ip)。

ip、pv、uv的区别:

        IP(独立IP):某IP地址的计算机访问网站的次数。这种统计方式很容易实现,具有真实性。所以是衡量网站流量的重要指标。

        PV(访问量):PV反映的是浏览某网站的页面数,所以每刷新一次也算一次。就是说PV与来访者的数量成正比,但PV并不是页面的来访者数量,而是网站被访问的页面数量。

        UV(独立访客):可以理解成访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。

 

        工作流程:

         S1:编写监控javascript和提供接口。这个接口返回的是监控网站对应的javascript文件,这个文件可以再客户端可以标记和采集访客的信息。

         S2:网站调用接口。只需将引入javascript到要监控的站点即可,访客访问该站点时,javascript文件就会被加载。

         S3:标记和采集数据。监控js被加载后就会往浏览器写入cookie标记访客,比如新访客生产一个新cookie和标记访问次数,若是老用户则,读取 cookie信息,计算访问次数和最后访问时间等,这些客户端的信息处理完后,则向指定的服务器发送数据。

         S4:最后服务器接收javascript提交过来的数据处理入库和后续的数据处理了。

 

1.models层建立统计表

# 每日访问量统计
class Statistics(models.Model):
    pv = models.IntegerField(default=0)
    uv = models.IntegerField(default=0)
    date = models.CharField(max_length=200)
    class Meta:
        verbose_name = '网站统计信息'
        verbose_name_plural = '网站统计信息'
    def__str__(self):
        return self.date

2.decorator.py建立装饰器函数

实现每次调用view试图函数前数据库字段先自加1

from models import Statistics
import time
def pvCount(func):
    def wrapper(request, *args, **kwargs):
        dateObj_list = Statistics.objects.filter(date=time.strftime('%Y-%m-%d'))
        count = dateObj_list.count()
        if count == 0:      # ==0,表示第一次访问,pv,uv默认都为1
            Statistics.objects.create(pv=1,uv=1,date=str(time.strftime('%Y-%m-%d')))
        else:
            todayObj = Statistics.objects.get(date=str(time.strftime('%Y-%m-%d')))
       # 每访问一次,pv+=1 todayObj.pv
+= 1 todayObj.save() return func(request, *args, **kwargs) return wrapper

3.view试图导入装饰器函数,并调用

from decorator import pvCount
@pvCount
def index(request):
    count = models.NewMachine.objects.all().count()
    phycount = models.PhysicalHost.objects.all().count()
    ret = dict()
    ret['count'] = count
    ret['phycount'] = phycount
    return render_to_response('index.html', ret)

 

 

 

 

标签:count,pv,python,IP,uv,访问,models,网站
来源: https://blog.51cto.com/52770825/2794599

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有