我的网站搭建: (第九天) 博客统计排行

简介:     在阅读计数功能之后,就可以可根据每篇博客的阅读量来对博客进行热门统计排行了,如阅读周榜,月榜,总榜。基本上只要实现其中一个,其他两个也能照着做出来,大体上的逻辑是一样的。

    在阅读计数功能之后,就可以可根据每篇博客的阅读量来对博客进行热门统计排行了,如阅读周榜,月榜,总榜。基本上只要实现其中一个,其他两个也能照着做出来,大体上的逻辑是一样的。都是通过django自带的工具包中的timezone模块获取今天的日期格式,再通过datetime模块的timedelta方法来做日期的差值,然后筛选出这两个时间点之间发表的文章,除了总榜只需要筛选出日期小于今天发表的文章。将该时间段的博客列表筛选出来之后,通过聚合函数求出每篇文章的阅读量总和,然后进行阅读量的排序

1.周榜

import datetime
from django.utils import timezone
from django.db.models import Sum
from blog.models import Post

def get_7_days_read_posts():
    """
        作用:获取阅读量周榜博客榜单
    """
    today = timezone.now().date()
    date = today - datetime.timedelta(days=7)
    posts = Post.objects \
        .filter(read_detail__date__lt=today, read_detail__date__gte=date) \
        .values('id''title') \
        .annotate(read_num_sum=Sum('read_detail__read_num')) \
        .order_by('-read_num_sum')
    return posts[:15]
AI 代码解读

2.月榜

import datetime
from django.utils import timezone
from django.db.models import Sum
from blog.models import Post

def get_30_days_read_posts():
    """
        作用:获取阅读量月榜博客榜单
    """
    today = timezone.now().date()
    date = today - datetime.timedelta(days=30)
    posts = Post.objects \
        .filter(read_detail__date__lt=today, read_detail__date__gte=date) \
        .values('id''title') \
        .annotate(read_num_sum=Sum('read_detail__read_num')) \
        .order_by('-read_num_sum')
    return posts[:15]
AI 代码解读

3.总榜

import datetime
from django.utils import timezone
from django.db.models import Sum
from blog.models import Post

def get_all_read_posts():
    """
        作用:获取阅读量总榜博客榜单
    """
    today = timezone.now().date()
    posts = Post.objects \
        .filter(read_detail__date__lt=today) \
        .values('id''title') \
        .annotate(read_num_sum=Sum('read_detail__read_num')) \
        .order_by('-read_num_sum')
    return posts[:15]
AI 代码解读

    在首页视图中,还有最新发表的博客,最新推荐的博客和随机推荐的博客,他们的实现如下:

4.最新发表

from blog.models import Post

new_publish = Post.objects.all()[:15]
AI 代码解读

5.最新推荐

import datetime
from django.utils import timezone
from .models import ReadDetail

def get_new_recommend_post(content_type):
    """
        作用:获取最新推荐博客列表
        content_type:数据表的模型类
    """
    today = timezone.now().date()
    yesterday = today - datetime.timedelta(days=1)
    read_detail = ReadDetail.objects.filter(content_type=content_type, date=yesterday).order_by('-read_num')
    return read_detail[0:15]  # 前十五条
AI 代码解读
6.随机推荐
import random
from blog.models import Post

def get_random_recomment():
    # 随机推荐
    random_posts = set()
    post_list = Post.objects.all()
    while random_posts.__len__() < 15:
        random_posts.add(random.choice(post_list))

    return random_posts
AI 代码解读

 

目录
打赏
0
0
0
0
5
分享
相关文章
wordpress统计博客访问量
问题描述 自己的博客搭建完毕之后,发现博客不知道被多少人访问过了,每天有多少人访问,多少人经常来访问等等。最好有一个工具能统计博客被浏览量,这不仅是对自己的一个鼓励,也是别人对你博客的认可! 解决方案 进入w...
1983 0
“博客大巴”等博客网站昨日发生大规模页面挂马
据瑞星“云安全”系统统计,昨日共有3,883,649人次的网民遭到网页挂马攻击,瑞星共截获了1,200,860个挂马网址,比前日略有下降。 当日被挂马网站Top5: 1、“博客大巴”:www.blogbus.com下的众多个人博客,被嵌入的恶意网址为www.****.com.cn/18/02.htm等。
995 0
【全网最全的博客美化系列教程】04.访客量统计的实现
全网最全的博客美化系列教程相关文章目录 【全网最全的博客美化系列教程】01.添加Github项目链接 【全网最全的博客美化系列教程】02.添加QQ交谈链接 【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠 【全网最全的博客美化系列教程】04.
1289 0
如何统计博客园的个人博客访问量
  使用过新浪博客的人都知道,新浪博客的首页有访问量统计功能,迁移到博客园之后发现博客园却没有这项功能,所幸博客园在后台管理的设置选项中有一个公告栏和设置页首页脚代码功能,使用起来非常灵活和方便。
1309 0
统计网站的在线人数
统计网站的在线人数
166 0
如何统计个人博客访问量
使用过新浪博客的人都知道,新浪博客的首页有访问量统计功能,迁移到博客园之后发现博客 园却没有这项功能,所幸博客园在后台管理的设置选项中有一个公告栏和设置页首页脚代码功能,使用起来非常灵活和方便。借此我们可以通过网络上提过的其他强 大的插件来为获取更加详细的访问统计信息(博客园这难道是借鉴了传统u...
1068 0
网站访问量统计小案例 | 学习笔记
快速学习网站访问量统计小案例。
305 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等