欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从零开始的django开发生活之博客阅读简单计数(12)

程序员文章站 2022-04-24 09:47:29
...

十二、博客阅读简单计数

1、简单计数处理

  1. Blog模型添加数字字段记录
  2. 每次有人打开,记录数+1

方法:为模型Blog新添加一个字段readed_num

readed_num = models.IntegerField(default=0)

在blog_detail方法中加入:

blog.readed_num += 1
        blog.save()

每次请求一篇具体博客页面,这个字段就会自动加1,前端页面直接引用此字段即可

2、自定义计数规则

以上方法存在问题,点进具体一篇博客,每次刷新都会自增1,这样并不是我们想要的,需要定义一种计数规则:

可规定,怎么才算阅读一次

  1. 无视是否同一个人,每次打开都记录
  2. 若同一个人,每隔多久才算阅读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进入控制台可以看到这样一条数据

从零开始的django开发生活之博客阅读简单计数(12)

由于我们没有设置时效,所以该数据在关闭浏览器时自动清除

3、该计数方法的缺点

  1. 后台编辑博客可能影响数据

    当我们后台编辑博客时,在此期间,阅读次数是有可能改变的,但是最后保存时会以我们刚打开时的阅读次数保存

    我们发现每阅读一次,最后更新日期字段就会改变

  2. 功能单一,无法统计某一天的阅读数

相关标签: 网站制作