目录:Django 2.1 从零开始搭建博客网站系列
服务器环境搭建(选学)
- 在阿里云服务器从零开始上线Django项目:Ubuntu18.04+Python3+Django2,并通过公网IP访问
小试牛刀——简单的博客网站
- 一、Django2.1 搭建简单的博客网站
- 二、Django2.1 搭建简单的博客网站扩展——自定义模板和静态文件位置
庖丁解牛——多用户的博客网站之用户模块
- 三、Django2.1 搭建多用户的博客网站——登录
- 四、Django2.1 搭建多用户的博客网站——注册
- 五、Django2.1 搭建多用户的博客网站——修改密码
- 六、Django2.1 搭建多用户的博客网站——重置密码
- 七、Django2.1 搭建多用户的博客网站——维护个人详细信息
- 八、Django2.1 搭建多用户的博客网站——头像上传
- 九、Django2.1 搭建多用户的博客网站——用户模块小结
庖丁解牛——多用户的博客网站之文章模块
- 十、Django2.1 搭建多用户的博客网站——文章栏目
- 十一、Django2.1 搭建多用户的博客网站——简单的文章发布
- 十二、Django2.1 搭建多用户的博客网站——使用Markdown发布文章
- 十三、Django2.1 搭建多用户的博客网站——修改和删除文章
- 十四、Django2.1 搭建多用户的博客网站——向用户展示文章
- 十五、Django2.1 搭建多用户的博客网站——文章模块小结
华丽转身——多用户的博客网站之扩展功能
- 十六、Django2.1 搭建多用户的博客网站——文章点赞功能
- 十七、Django2.1 搭建多用户的博客网站——统计文章浏览次数
- 十八、Django2.1 搭建多用户的博客网站——文章评论功能
- 十九、Django2.1 搭建多用户的博客网站——使用自定义模板标签
- 二十、Django2.1 搭建多用户的博客网站——文章标签
- 二十一、Django2.1 搭建多用户的博客网站——美图模块
- 未完待续
项目源码下载:https://github.com/jt1024/lehehe
正文:
1、安装Redis
安装:在Mac环境下,执行 brew install redis 命令,可安装Redis。
启动:安装成功后,执行 redis-server /usr/local/etc/redis.conf 命令,可启动Redis。启动成功会显示如图:
客户端:启动Redis后,再打开一个命令终端,执行 redis-cli 可以进入 Redis 客户端,成功进入后如图
Windows环境可百度自行查阅,推荐参考 http://www.runoob.com/redis/redis-install.html
2、在Python中使用Redis
执行命令 pip install redis 可安装Python的Redis库。
3、记录阅读次数
在 ./lehehe/settings.py 文件中做好数据库的配置,即在最后增加如下变量
# Redis配置
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0
修改 ./article/list_views.py 建立与 Redis 数据库的连接,即新增如下代码
import redis
from django.conf import settings
r = redis.StrictRedis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, db=settings.REDIS_DB)
修改 ./article/list_views.py 中的 article_detail 方法
def article_detail(request, id, slug):
article = get_object_or_404(ArticlePost, id=id, slug=slug)
total_views = r.incr("article:{}:views".format(article.id))
return render(request, "article/list/article_content.html", {"article": article, "total_views": total_views})
修改 ./templates/article/list/article_content.html 在这行代码
{{ total_likes }}like{{ total_likes|pluralize }}
后新增如下代码
{{ total_views }} view{{ total_views|pluralize}}
打开文章详情,刷新页面,查看效果。
4、显示最热文章
修改 ./article/list_views.py 中的 article_detail 方法
def article_detail(request, id, slug):
article = get_object_or_404(ArticlePost, id=id, slug=slug)
total_views = r.incr("article:{}:views".format(article.id))
r.zincrby('article_ranking', 1, article.id)
article_ranking = r.zrange("article_ranking", 0, -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))
return render(request, "article/list/article_content.html", {"article": article, "total_views": total_views, "most_viewed": most_viewed})
修改 ./templates/article/list/article_content.html 增加如下代码
修改后的完整代码如下
{% extends "base.html" %}
{% load staticfiles %}
{% block title %}articles list{% endblock %}
{% block content %}
{% with total_likes=article.users_like.count users_like=article.users_like.all %}
{{ article.title }}
{{ article.author.username }}
{{ total_likes }}like{{ total_likes|pluralize }}
{{ total_views }} view{{ total_views|pluralize}}
点赞本文的读者
{% for user in article.users_like.all %}
{{user.username}}
{% empty %}
还没有人对此文章表态
{% endfor %}
{% endwith %}
{% endblock %}
打开文章详情,刷新页面,查看效果。