Django實現文章的閱讀次數記錄
阿新 • • 發佈:2019-01-01
一 文章的閱讀次數記錄思維導圖
二 記錄閱讀次數
1 配置Redis
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0
2 編輯mysite/article/list_views.py,下面是關鍵程式碼
import redis # 用於引入本專案settings.py中的變數 from django.conf import settings # 引用settings.py中的變數REDIS_HOST,REDIS_PORT,REDIS_DB r = redis.StrictRedis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, db=settings.REDIS_DB) # 沒有登入的使用者也可以訪問這個函式 def article_detail(request, id, slug): article = get_object_or_404(ArticlePost, id=id, slug=slug) # total_views:記錄文章訪問量 # 一般通過“物件型別:物件ID:物件屬性”來命名一個鍵 total_views = r.incr("article:{}:views".format(article.id)) # 將訪問此時傳遞給模板 return render(request, "article/list/article_detail.html", {"article": article, "total_views": total_views,})
3 模板中增加訪問次數的程式碼
<header> <h1>{{ article.title }}</h1> <p> <a href="{% url 'article:author_articles' article.author.username %}"> {{ article.author.username }} </a> <!-- pluralize的作用:如果total_likes為0或複數,則顯示的是likes,如果total_likes為1,則顯示like--> <span style="margin-left:20px" class="glyphicon glyphicon-thumbs-up">{{ total_likes }}like{{ total_likes | pluralize }}</span> <!-- 該文章總的訪問此時--> <span style="margin-left: 20px">{{ total_views }}view{{ total_views | pluralize }}</span> </p> </header>
三 測試
不論是登入使用者還是非登入使用者,文章的訪問次數都能被記錄