使用原来的SQLite数据库:
访问量自增,然后保存入数据库
# 法1:Model直接:自定义数据类型 存储访问量 # article.viewers_count += 1 article.viewers_count = total_views article.save() # 临时变量保存入数据库
使用Redis数据库
# 3种方法记录访问量: # Redis数据库: # 下面2个变量都是用于记录 访问量的,有点冗余 设置键值对:自增,存储访问量 article:article.id:views 对应 数值 # 法2:incr函数键值递增,article:id:views的方式命名一个键 total_views = r.incr("article:{}:views".format(article.id)) 读取值: r.get("article:{}:views".format(article.id)) 定义一个表格,用于记录与查询, article.id 对应 amount # 法3:重新定义一个 键对值, 用于记录访问量 r.zincrby(name='article_ranking_table', amount=1, value=article.id) # 访问量排序 article_ranking = r.zrange(name='article_ranking_table', start=0, end=-1, desc=True)[:10] article_ranking_ids = [int(id) for id in article_ranking] most_viewed = list(ArticlePost.objects.filter(id__in=article_ranking_ids)) most_viewed.sort(key=lambda x: article_ranking_ids.index(x.id))