- • 一个博客系列里面包含多篇博客,那么如何统计博客的访问量呢?
- • 统计博客的访问量很简单,在用户访问这篇博客的时候让访问量字段加一就可以了
- • 那么博客系列,就是该系列下所有的博客的访问量之和,我这里设置为,你访问了这篇博客,那么这个系列访问量也会+1
blogDetail = blog.objects.get(id=id)
# 更新浏览数
blogDetail.views += 1
blogDetail.list.views += 1
blogDetail.save()
blogDetail.list.save()
- • blogDetail就是你访问的博客
- • blogDetail.views就是这个模型下views这个字段+1
- • blogDetail.list.views就是系列的views
- • 之后两个save就是数据库的操作,+1后要保存
- • 如果不考虑大访问量,大量操作数据库操作等问题
- • 在正常情况下,由于我的views字段是写在blog和blogList模型里的,并没有设置外链拆开
- • 而且发布文章是在后台发布的,这里就有机会出现博客系列的访问量大于所有博客访问量之和的问题(比如:我想编辑一篇博客,当我进入编辑页面的时候,访问量是100,在我编辑的时候,有50个人访问了我的页面,那访问量就会150,博客系列的访问量也会加50,但是编辑页面的访问量是100,所以当我保存这篇博客的时候,会把博客访问量从150变成100,就少了博客系列总访问量50)
- • 最简单的解决办法就是在数据模型的时候将访问量和博客的数据拆开,这样保存的话,访问量也不会保存
- • 第二种办法就是定时设置方法,重新统计博客系列的访问量,这样他们数值就会相同,但是这样在编辑的时候访问的数字还是不会被统计
i = 0
listCount = blogList.objects.count()
while i < listCount:
newViews = blog.objects.filter(list=i+1).aggregate(Sum('views'))
newViews = newViews.get('views__sum')
newList = blogList.objects.get(id=i+1)
newList.views = newViews
newList.save()
i += 1
- • 第三种方法就是在前台页面做一个发布修改博客的页面,然后只修改文章内容,这样也不会动访问量数据