博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 统计每月用户注册量(总注册数)
阅读量:4222 次
发布时间:2019-05-26

本文共 1251 字,大约阅读时间需要 4 分钟。

背景: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' }, ... }

转载地址:http://eymmi.baihongyu.com/

你可能感兴趣的文章
SpringMVC请求处理过程浅析
查看>>
重学设计模式(七)—— 责任链模式
查看>>
Netty框架学习之路(五)—— EventLoop及事件循环机制
查看>>
MyBatis的缓存机制
查看>>
Java中的锁及AQS实现原理
查看>>
MySQL索引及优化
查看>>
MySQL的锁问题
查看>>
Java并发容器及其实现原理
查看>>
JVM调优方法
查看>>
MySQL的高可用
查看>>
Spring的注解驱动开发
查看>>
NoSQL数据库之Redis
查看>>
从IO-BIO-NIO-AIO-到Netty
查看>>
手写一个简易跳表(Java版)
查看>>
深入理解Redis
查看>>
SpringMVC实战与源码分析
查看>>
计算机操作系统--文件管理
查看>>
设计模式之行为型模式
查看>>
设计模式之结构型模式
查看>>
Java的反射机制
查看>>