Django - 博客阅读简单计数

简单计数

处理方法

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

修改模型

# 博客阅读数
readed_num = models.IntegerField(default=0)

添加 + 1 方法

views.py

blogs.readed_num += 1
    blogs.save()

这种方法会有一个弊端, save方法是全局的, 所以执行save方法以后, 最后一次修改时间会变化

修改前端页面

<li>阅读({{ blog.readed_num }})</li>

自定义计数规则

  • 设置多次时间访问一次算做一次阅读

设置cookie

cookie在django处理机制中会被处理成一个字典

# 博客详情页
def blog_detail(request, blog_pk):
    blogs = get_object_or_404(Blog, pk=blog_pk)
    # 如果cookie里面不存在记录
    if not request.COOKIES.get('blog_%s_readed' % blog_pk):
        blogs.readed_num += 1
        blogs.save()

    context = {}
    # 上一篇博客
    context['previous_blog'] = Blog.objects.filter(created_time__gt=blogs.created_time).last()
    # 下一篇博客
    context['next_blog'] = Blog.objects.filter(created_time__lt=blogs.created_time).first()
    context['blog'] = blogs
    # 获取响应
    response =  render(request, 'blog/blog_detail.html', context)
    # 添加一个cookie, 第一个参数是添加一个字段记录, 第二个字段是true, 表示已经访问过
    response.set_cookie('blog_%s_readed' % blog_pk, 'true')
    return response
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值