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字符串连接的N种方式总结
Sep 17 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
python学习数据结构实例代码
May 11 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
Python反转序列的方法实例分析
Mar 21 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
Python3数字求和的实例
Feb 19 Python
python实现大文本文件分割
Jul 22 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
python线程信号量semaphore使用解析
Nov 30 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 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
总结PHP中数值计算的注意事项
2016/08/14 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Django URL传递参数的方法总结
2016/08/28 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python实现静态web服务器
2019/09/03 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
如何基于python操作json文件获取内容
2019/12/24 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
中职生自我鉴定范文
2013/10/03 职场文书
法律专业自我鉴定
2013/10/03 职场文书
数学系个人求职信范文
2014/01/30 职场文书
日语系毕业求职信
2014/07/27 职场文书
男性健康日的活动方案
2014/08/18 职场文书
实验心得体会
2014/09/05 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
四年级数学教学反思
2016/02/16 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP