Django实现文章的阅读次数记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/85472918

一 文章的阅读次数记录思维导图

二 记录阅读次数

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>

三 测试

不论是登录用户还是非登录用户,文章的访问次数都能被记录

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/85472918