python 统计每月用户注册量(总注册数)

时间:2021-08-23 17:17:49

背景:djiango项目,models.py中add_at的类型定义为DateTimeField格式;

class userinfo(models.Model):
add_at = models.DateTimeField( )
.......

view.py中,代码关键是设置好每月的起止时间,再按区间过滤和计数。

def get_reguser():
regtotal = 0
chart_data = []
start_day = datetime.datetime(2013, 3, 1, 0, 0, 0, 0)
now = datetime.datetime.now()
cur_day = start_day
while cur_day < now:
month = cur_day.month + 1
year = cur_day.year
if month > 12:
month = 1
year = year + 1
end_day = datetime.datetime(year, month, 1)
#
regcount = userinfo.objects.filter(add_at__gt=cur_day, add_at__lt=end_day).count() #过滤并计数
citem = {}
citem['name'] = cur_day.strftime('%Y-%m')
citem['val'] = regcount
regtotal = regtotal + regcount
chart_data.append(citem)
#
cur_day = end_day

return regtotal,chart_data

贴心小棉袄最后再附上前端显示代码:

# 套用echart柱状图模板的数据格式
var data_x = [{% for item in chart_data %}'{{item.name|safe}}',{%endfor%}];
var data_y = [{% for item in chart_data %}'{{item.val|safe}}',{%endfor%}];

option = {
title : {
text: '**注册用户统计',
subtext: '注册总人数{{reg_total}}',
left: 'center'
},
...
}