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求众数问题实例
Sep 26 Python
跟老齐学Python之编写类之二方法
Oct 11 Python
centos6.4下python3.6.1安装教程
Jul 21 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
python reduce 函数使用详解
Dec 05 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
python多线程抽象编程模型详解
Mar 20 Python
浅析Python 引号、注释、字符串
Jul 25 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python爬虫要用到的库总结
Jul 28 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 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 设计模式之 单例模式
2008/12/19 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
jquery中each方法示例和常用选择器
2014/07/08 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
wxPython中文教程入门实例
2014/06/09 Python
python3操作mysql数据库的方法
2017/06/23 Python
python查询mysql,返回json的实例
2018/03/26 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
非常详细的C#面试题集
2016/07/13 面试题
情人节寄语大全
2014/04/11 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
详解 TypeScript 枚举类型
2021/11/02 Javascript