1. 程式人生 > >Django實現文章的閱讀次數記錄

Django實現文章的閱讀次數記錄

一 文章的閱讀次數記錄思維導圖

二 記錄閱讀次數

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>

三 測試

不論是登入使用者還是非登入使用者,文章的訪問次數都能被記錄