Django Highcharts制作图表


Posted in Python onAugust 27, 2016

在运维工作总很多数据最终的展现方式要用到图表,毕竟用图来展示要比一堆数字更直观些,比如利用率、站点的PV,UV等,大家千万不要觉得看到很多漂亮的图就感觉很难,其实真心不是,因为现在有很多前端的绘图库,你只需要按它要求的格式(json)提供给前端接口,什么曲线图、饼图,还有你从来都不知道的图都可以生成出来,现在用的比较多的是highcharts,echarts等,django-highcharts是django的一个集成库,使用它在django里更方便绘制出我们想要的图表,所以这篇文章就使用它来完成一个超小项目,实现一个站点的PV,UV曲线图, 另外我一直认为公众号其实不太合适贴太多的代码,要看代码最好还是用专业的编辑器,如果通篇都是代码,我估计很多人直接就收藏了,时间久了自己都忘了,起不到真正学习的目的, 所以今天我重点还是讲使用步骤,确保下次大家开发的时候会用,代码只是辅助,当然核心的我也会全部贴出来,但完整的代码限于篇幅就不在贴了,另外这篇是需要小伙伴们有django一点点基础的,如果没有任何基础,可能需要先了解下基本mvc的概念,否则你可能会看的云里雾里, 其它不多说了,现在开始,我先介绍下开发环境:

python 2.7 + django1.8.2 + mysql (版本随意)

第一步,安装django-higchats,这个根据大家使用的环境即可,pip或直接用pycharm工具安装都可以。

第二步,新建project 和app

第三步,以上做完,就可以敲代码了,先建models,就是数据库表的表结构,日常站点访问数据PV,UV数据可以插入到这个表里,一会我们要使用。

第四步,图表模块代码编写,这部分主要是一个类从数据库表中获取数据,然后将数据提供给图形展示类,代码如下:

class pudata(object):
 
  def __init__(self, dbobj):
    self.dbobj = dbobj
    self.pdays = self.dbobj.objects.all()
 
  def mpvdate(self):
    res = {}
    for v in self.pdays:
      res[v.days] = v.pvisitor
    res = collections.OrderedDict(sorted(res.items(), key=lambda d: d[0]))
    return res
 
  def muvdate(self):
    res = {}
    for v in self.pdays:
      res[v.days] = v.uvisitor
    res = collections.OrderedDict(sorted(res.items(), key=lambda d: d[0]))
    return res
 
class MindgViewPv(HighChartsMultiAxesView):
  p = pudata(mindg)
  title = 'mindg.cn'
  tooltip = {'shared': 'true'}
  chart_type = 'spline'
  categories = p.mpvdate().keys()
 
  @property
  def yaxis(self):
    y_axis = [
    {
      'title': {
        'text': 'PV'
      },
    }
    ]
    return y_axis
 
  @property
  def series(self):
    p = pudata(mindg)
    series = [
      {
      'name': 'mindg.cn',
      'data': p.icypvdate().values()
      }]
    return series

第五步,模板层代码,模板采用ajax方式,从后台获取的json数据给highcharts然后绘制曲线图,代码如下:

{% extends 'head_css.html' %}
{% load highcharts_tags %}
 
{% block js %}
 <script type="text/javascript">
  $(function (){
    $.getJSON("{% url 'mpv' %}", function(data) {
      $('#container').highcharts(data);
    });
  });
  </script>
 {% endblock %}

有了上面的代码,就可以通过view函数将mindg.html 渲染出来了,最终图如下:

Django Highcharts制作图表

关于highcharts的使用就介绍到这里,如有疑问请我直接留言。

Python 相关文章推荐
Python自动化测试工具Splinter简介和使用实例
May 13 Python
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
Python实现简单http服务器
Apr 12 Python
python利用百度AI实现文字识别功能
Nov 27 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
python基础教程之while循环
Aug 14 Python
Python小程序之在图片上加入数字的代码
Nov 26 Python
python ubplot使用方法解析
Jan 10 Python
python实现查找所有程序的安装信息
Feb 18 Python
python将logging模块封装成单独模块并实现动态切换Level方式
May 12 Python
Python中使用subprocess库创建附加进程
May 11 Python
Python连接DB2数据库
Aug 27 #Python
使用python绘制常用的图表
Aug 27 #Python
python实现实时监控文件的方法
Aug 26 #Python
Python爬取京东的商品分类与链接
Aug 26 #Python
Python设计模式之抽象工厂模式
Aug 25 #Python
简单谈谈python中的Queue与多进程
Aug 25 #Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 #Python
You might like
介绍几个array库的新函数 php
2006/12/29 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
PHP中“=&gt;
2019/03/01 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
python读文件逐行处理的示例代码分享
2013/12/27 Python
windows下python连接oracle数据库
2017/06/07 Python
git进行版本控制心得详谈
2017/12/10 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
python调试神器PySnooper的使用
2019/07/03 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
Python实现数字的格式化输出
2020/08/01 Python
毕业生的自我评价
2013/12/30 职场文书
新农村建设典型材料
2014/05/31 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
教师党员整改措施
2014/10/24 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
婚宴父母致辞
2015/07/27 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
教师素质教育心得体会
2016/01/19 职场文书
导游词之无锡梅园
2019/11/28 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
nginx共享内存的机制详解
2022/03/21 Servers