简单计数
处理方法
- 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