日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网站搭建 (第09天) 博客统计排行

發(fā)布時(shí)間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网站搭建 (第09天) 博客统计排行 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

  ?在閱讀計(jì)數(shù)功能之后,就可以可根據(jù)每篇博客的閱讀量來對博客進(jìn)行熱門統(tǒng)計(jì)排行了,如閱讀周榜,月榜,總榜。基本上只要實(shí)現(xiàn)其中一個(gè),其他兩個(gè)也能照著做出來,大體上的邏輯是一樣的。都是通過django自帶的工具包中的timezone模塊獲取今天的日期格式,再通過datetime模塊的timedelta方法來做日期的差值,然后篩選出這兩個(gè)時(shí)間點(diǎn)之間發(fā)表的文章,除了總榜只需要篩選出日期小于今天發(fā)表的文章。將該時(shí)間段的博客列表篩選出來之后,通過聚合函數(shù)求出每篇文章的閱讀量總和,然后進(jìn)行閱讀量的排序

二、周榜

import datetime from django.utils import timezone from django.db.models import Sum from blog.models import Postdef get_7_days_read_posts():"""作用:獲取閱讀量周榜博客榜單:return: 周榜博客前15條博客"""today = timezone.now().date()date = today - datetime.timedelta(days=7)posts = Post.objects \.filter(Q(display=0) | Q(display__isnull=True), 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]

三、月榜

import datetime from django.utils import timezone from django.db.models import Sum from blog.models import Postdef get_30_days_read_posts():"""作用:獲取閱讀量月榜博客榜單:return: 月榜博客前15條博客"""today = timezone.now().date()date = today - datetime.timedelta(days=30)posts = Post.objects \.filter(Q(display=0) | Q(display__isnull=True), 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]

四、總榜

import datetime from django.utils import timezone from django.db.models import Sum from blog.models import Postdef get_all_read_posts():"""作用:獲取閱讀量總榜博客榜單:return: 總榜博客前15條博客"""today = timezone.now().date()posts = Post.objects \.filter(Q(display=0) | Q(display__isnull=True), 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]

五、最新發(fā)表

from blog.models import Postnew_publish = Post.objects.all()[:15]

六、最新推薦

import datetime from django.utils import timezone from .models import ReadDetaildef get_new_recommend_post(content_type):"""作用:獲取最新推薦博客列表:param content_type: 數(shù)據(jù)表的模型類:return: 最新推薦的前15條博客"""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] # 前十五條

七、隨機(jī)推薦

import random from blog.models import Postdef get_random_recomment():"""作用:獲取隨機(jī)推薦博客列表:return: 隨機(jī)推薦的前15條博客"""# 隨機(jī)推薦random_posts = set()post_list = Post.objects.filter(Q(display=0) | Q(display__isnull=True))if post_list.count() < 15:return post_listwhile random_posts.__len__() < 15:random_posts.add(random.choice(post_list))return random_posts

  原文出處:https://jzfblog.com/detail/65,文章的更新編輯以此鏈接為準(zhǔn)。歡迎關(guān)注源站文章!

轉(zhuǎn)載于:https://www.cnblogs.com/djcoder/p/10840662.html

總結(jié)

以上是生活随笔為你收集整理的网站搭建 (第09天) 博客统计排行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。