zoukankan      html  css  js  c++  java
  • 博客阅读简单计数

    1.Blog模型添加数字字段记录

    在Blog模型增加字段  

    readed_num = models.IntegerField(default=0)
    之后同步数据库 makemigrations 应用迁移文件migrate
    可以在后台admin显示readed_num

    2.每次有人打开,记录数+1

    在views的博客详细方法里,每次访问,readed_num+1

    def blog_detail(request, blog_pk):
    blog = get_object_or_404(Blog, pk=blog_pk)
    blog.readed_num +=1
    blog.save()
    前端页面可以{{blog.num}}获取数据


    3.自定义计数规则,可规定,怎么才算阅读1次
    1)无视是否同一个人,每次打开都记录
    2)若同一个人,每隔多久才算阅读一次

    Cookie实际上是一种数据存储技术,由服务器生成,并保存在客户端(浏览器)的一种技术。
    cookie浏览器可以保存一定的数据到电脑端
    每次提交请求,浏览器会把所有cookie信息提交给服务器,
    服务器会读存的东西,我们可以根据存的东西里面的数据去做一些处理,包括我们的登录状态都是会通过cookie进行处理的。
    这里我们用cookie保存我们阅读的信息到本地,不要每次刷新都算一次阅读,控制好计数的规则
    设置cookie有2个步骤
    1)存储cookie
    存储cookie是由Response对象来完成,当通过Response对象设置好cookie后,再响应到客户端,cookie会随之存入到客户端。
    由服务器生成,通过Response对象传递给客户端浏览器并保存
    先把响应取出来,之后再return回去
    response = render(request, 'blog/blog_detail.html', context) #把响应取出来
    response.set_cookie('blog_%s_readed' % blog_pk, 'true') #在django中类似字典,这里我们只需设置我们读过没有,因为cookie有一个过期时长,过期后就不会再提交
    return response

    设置cookie时,第一个是键:'blog_%s_readed' % blog_pk 。第二个是值 'true'


    2)读取cookie
    请求服务器时,当再次访问项目时,request会携带本项目的所有cookie到达服务器,通过request对象可以读取cookie中的数据。
    def blog_detail(request, blog_pk):
    blog = get_object_or_404(Blog, pk=blog_pk)
    if not request.COOKIES.get('blog_%s_readed' % blog_pk):
    blog.readed_num +=1
    blog.save()

    用request.COOKIES.get('blog_%s_readed' % blog_pk) 读取cookie。
    COOKIES相当于一个字典,字典有get()方法,通过键'blog_%s_readed' % blog_pk 获取值,如果没有记录则+1并保存,之后存到cookie。
    如果有cookie记录则无需+1。

    服务器把这个cookie信息跟浏览器说,“你要在这台电脑记录他访问过这篇文章”,这个信息设置到本地电脑以后,每次提交才会把这个信息提交给服务器,服务器才会去读。
    这里涉及一个写一个读。

    3.该计数方法的缺点
    1)后台编辑博客可能影响数据,如前端在访问,后台会把之前的数据最后保存;每次save()会修改博客最后更新时间
    2)功能单一,无法统计某一天的阅读数,也没有记录之前的阅读数。
  • 相关阅读:
    四则运算在线答题dos
    动手动脑11.11
    Java编程中关于异常处理的10个要点
    java第五周课后作业1
    java静态初始化块的执行顺序
    java工程项目作业1
    十一Java作业三
    Linux运维笔记(一)网络基础知识
    分布式笔记(二)一致性协议
    分布式笔记(一)分布式构架概述
  • 原文地址:https://www.cnblogs.com/lag1/p/13831035.html
Copyright © 2011-2022 走看看