一 文章的阅读次数记录思维导图
二 记录阅读次数
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>
三 测试
不论是登录用户还是非登录用户,文章的访问次数都能被记录