使用原來的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))