一. 每日阅读统计
1. 每日阅读计数统计模型
# blogstatistics.models.py
class ReadDetailNum(models.Model):
date = models.DateField(default=timezone.now) #日期
read_num = models.IntegerField(default=0) # 阅读数
content_type = models.ForeignKey(ContentType,on_delete=models.DO_NOTHING)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type','object_id') # ContentType
2. 每日阅读计数统计方法
利用object.aggregate(Sum())方法进行相关统计。
# blogstatistics.views.py
def get_seven_days_read_data(content_type):
today = timezone.now().date()
date_list=[] #前七天日期列表
read_nums=[] #前七天日期对应阅读数
# 利用Sum方法进行统计
for i in range(7,0,-1):
date = today-datetime.timedelta(days=i)
date_list.append(date.strftime('%m-%d'))
read_details = ReadDetailNum.objects.filter(content_type=content_type,date=date)
result = read_details.aggregate(read_num_sum=Sum('read_num'))
read_nums.append(result['read_num_sum'] or 0)
return date_list,read_nums
二. 图表显示
将统计数据显示在“home.html”模版中。
1. HighCharts框架
Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。
Highcharts 支持的图表类型有直线图、曲线图、区域图、柱状图、饼状图、散状点图、仪表图、气泡图、瀑布流图等多达 20 种图表,其中很多图表可以集成在同一个图形中形成混合图。
2. 一分钟上手HighCharts框架
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个 Highcharts 图表</title>
</head>
<body>
<!-- 图表容器 DOM -->
<div id="container" style="width: 600px;height:400px;"></div>
<!-- 引入 highcharts.js -->
<script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>
<script>
// 图表配置
var options = {
chart: {
type: 'bar' //指定图表的类型,默认是折线图(line)
},
title: {
text: '我的第一个图表' // 标题
},
xAxis: {
categories: ['苹果', '香蕉', '橙子'] // x 轴分类
},
yAxis: {
title: {
text: '吃水果个数' // y 轴标题
}
},
series: [{ // 数据列
name: '小明', // 数据列名
data: [1, 0, 4] // 数据
}, {
name: '小红',
data: [5, 7, 3]
}]
};
// 图表初始化函数
var chart = Highcharts.chart('container', options);
</script>
</body>
</html>
注明:学习资料来自“再敲一行代码的个人空间”以及“杨仕航的博客”