1、视图函数
# 不需要登录装饰器,匿名用户也可访问
def article_detail(request, id, slug):
# print(slug,id)
article = get_object_or_404(ArticlePost, id=id, slug=slug)
# 连接redis
r = redis.StrictRedis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, db=settings.REDIS_DB)
# 总的访问次数,访问一次就+1,一般命名规则为"对象类型:对象ID:对象属性"
total_views = r.incr('article:{}:views'.format(article.id))
# zincrby(name, amount, value)方法:根据amount设定的步长增加有序集合name中的value的分值(类似于权重)
# 实现了每访问一次文章就会将article_ranking中的article.id分值增加1
# article_ranking中存放的是文章的id用来代表文章,每访问一次该文章就会增加文章的分值
r.zincrby('article_ranking', 1, article.id)
# 获取分值排名前十的对象
article_ranking = r.zrange('article_ranking', 0, -1, desc=True)[:10]
# 获取排名前十文章的id列表,使用的是列表推导式,先进行for循环,再将每次的的值带入int(