从零开始的django开发生活之博客阅读简单计数(12)
程序员文章站
2022-04-24 09:47:29
...
十二、博客阅读简单计数
1、简单计数处理
- Blog模型添加数字字段记录
- 每次有人打开,记录数+1
方法:为模型Blog新添加一个字段readed_num
readed_num = models.IntegerField(default=0)
在blog_detail方法中加入:
blog.readed_num += 1
blog.save()
每次请求一篇具体博客页面,这个字段就会自动加1,前端页面直接引用此字段即可
2、自定义计数规则
以上方法存在问题,点进具体一篇博客,每次刷新都会自增1,这样并不是我们想要的,需要定义一种计数规则:
可规定,怎么才算阅读一次
- 无视是否同一个人,每次打开都记录
- 若同一个人,每隔多久才算阅读1次
对以上方法改进:
if not request.COOKIES.get('blog_%s_readed' % blog_pk):
blog.readed_num += 1
blog.save()
cookies是每次浏览器请求服务器时返回的数据存档,return语句改为
response = render_to_response('blog/blog_detail.html', context)
response.set_cookie('blog_%s_readed' % blog_pk, 'true')
return response
set_cookie是response的一个方法,参数为一个字典,保存修改,刷新页面,按f12进入控制台可以看到这样一条数据
由于我们没有设置时效,所以该数据在关闭浏览器时自动清除
3、该计数方法的缺点
-
后台编辑博客可能影响数据
当我们后台编辑博客时,在此期间,阅读次数是有可能改变的,但是最后保存时会以我们刚打开时的阅读次数保存
我们发现每阅读一次,最后更新日期字段就会改变
-
功能单一,无法统计某一天的阅读数