18、博客阅读简单计数
1、简单计数处理
- 1、Blog模型添加数字字段记录
- 2、每次有人打开,记录数+1
在blog/model.py的Blog
类里面新增一个字段read_num
,修改models.py如下:
同步修改admin.py如下:
同步迁移数据库,启动,访问后台页面:
然后修改views.py里的blog_detail如下:
然后我们点击浏览博客30的详情页面,再回到后台页面刷新,可以看到博客30的read_num增加了1
接下来我们把阅读量信息加到博客详情页面中显示
修改blog_detail.html
接着,我们让博客列表页面也显示阅读量
修改blog_list.html如下:
有一个问题,在某篇博客的详情页面,我刷新一下,阅读量就增加1了,也就是说,只要我一请求,不管是什么状态,它都加1,这就涉及到我们需要定义下,在什么情况下设定为一次阅读
2、自定义计数规则
可规定,怎么才算阅读1次
- 1)无论是否同一个人,每次打开都记录
- 2)若同一个人,每隔多久才算阅读1次
当然,如果是用户的话,这个问题很简单,我们只要是登录用户,把这个用户信息记录起来,那如果是一个没有登录的访客进行访问呢,这个访客要怎么算,怎样才算一次阅读,那么这里最好有一个东西能够帮我们标记一个状态,就是这个用户大概什么时候阅读了,那我们就可以根据这个状态去判断它是不是算作为同一次阅读的标准去衡量。但我们做一个网站,通常是认为它是一个服务器或者是多个服务器,是一个整体,那用户有很多,我们也不知道是谁访问,该怎样去控制呢?这就涉及到一个东西,叫cookie
,这个东西是浏览器可以保存一定的数据到电脑端这边,然后我们每次发送请求,浏览器就会把全部 cookie 信息提交给服务器,服务器就可以读取这个保存的信息,我们就可以根据这里面的数据去做一些处理,包括一些我们的登录状态也是通过 cookie 处理的。那这里我们就用 cookie 保存阅读信息到本地这种方法来实现。
那设置 cookie 信息就有两个步骤:1、服务器把这个 cookie 信息跟浏览器说在这台电脑记录下他访问过这篇文章,这个信息设置到本地电脑后,每次提交,它才会把这个数据提交给服务器,服务器才会去读.
设置 cookie 的页面
修改views.py
再刷新页面
然后我们判断加载之前有没有这个cookie,修改views.py如下:
这里我们要做一个测试,验证刚刚两个参数都不添加的效果:
在不关闭浏览器,只关闭标签时,它的cookie是有效的,访问不计数。一旦关闭浏览器,cookie才失效,访问会计数。
3、该计数方法的缺点
- 1、后台编辑博客可能影响数据
- 2、功能单一,无法统计某一天的阅读数
这里有两个问题
第一个问题,当在后台修改的过程当中,如果此时刚好有人访问了博客,那就是说,在后台改动的时候,read_num就会变化,但我们后台改完之后保存,read_num是以之前的数量进行保存的。
第二个问题,我们只能看这篇文章具体有多少阅读量,没有办法统计每天的阅读量。