基于Django快速集成Echarts代码示例


Posted in Python onDecember 01, 2020

1.在线定制下载echarts

https://echarts.apache.org/zh/builder.html

2.创建一个django项目或者在已有的项目

  • 配置文件中确保数据库配置、static配置、与添加项目名到INSTALLED_APPS下。
  • 配置静态文件目录static,目录下创建:css、img、js。
  • 保存echarts.min.js到js目录下。
  • 创建templates文件,html文件放到此目录。

快速静态测试

test.html文件

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>ECharts</title>
  <!-- 引入 echarts.js -->
  {% load static %}
  <script src="{% static '/js/echarts.min.js' %}"></script>
</head>
<body>
  <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  <div id="main" style="width: 600px;height:400px;"></div>
  <script type="text/javascript">
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));

    // 指定图表的配置项和数据
    var option = {
      title: {
        text: 'ECharts 入门示例'
      },
      tooltip: {},
      legend: {
        data:['销量']
      },
      xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }]
    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
  </script>
</body>
</html>

urls文件

from django.urls import path
from app.views import TestView
urlpatterns = [
  path('test/',TestView.as_view()),
]

Views文件

from django.shortcuts import render
from rest_framework.views import View
from rest_framework.response import Response


class TestView(View):
  def dispatch(self, request, *args, **kwargs):
    """
    请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法

    注意:APIView中的dispatch方法有好多好多的功能
    """
    return super().dispatch(request, *args, **kwargs)

  def get(self, request, *args, **kwargs):
    return render(request, "test.html")

  def post(self, request, *args, **kwargs):
    return Response('POST请求,响应内容')

  def put(self, request, *args, **kwargs):
    return Response('PUT请求,响应内容')

Views文件

访问url地址:

基于Django快速集成Echarts代码示例

django获取数据库中的数据传递给echarts

test1.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>ECharts</title>
  <!-- 引入 echarts.js -->
  {% load static %}
  <script src="{% static '/js/echarts.min.js' %}"></script>
</head>
<body>
  <div id="main" style="width: 600px;height:400px;"></div>
  <script type="text/javascript">
  // 基于准备好的dom,初始化echarts实例
  console.log(name)
  var myChart = echarts.init(document.getElementById('main'));

  // 指定图表的配置项和数据
  var option = {
    title: {
      text: 'ECharts 入门示例'
    },
    tooltip: {},
    legend: {
      data: ['销量']
    },
    xAxis: {
      data: {{ name|safe }}
    },
    yAxis: {},
    series: [{
      name: '销量',
      type: 'bar',
      data:{{ data|safe }}
    }]
  };

  // 使用刚指定的配置项和数据显示图表。
  myChart.setOption(option);
  </script>
</body>
</html>

urls文件

from django.urls import path
from app.views import TestView1

urlpatterns = [
  path('test1/',TestView1.as_view()),
]

Views文件

from django.shortcuts import render
from rest_framework.views import View
from rest_framework.response import Response

class TestView1(View):
  def dispatch(self, request, *args, **kwargs):
    """
    请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法

    注意:APIView中的dispatch方法有好多好多的功能
    """
    return super().dispatch(request, *args, **kwargs)

  def get(self, request, *args, **kwargs):
    name = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    data = [56, 40, 54, 23, 12, 31]
    return render(request, "test1.html",{"name":name,"data":data})

  def post(self, request, *args, **kwargs):
    return Response('POST请求,响应内容')

  def put(self, request, *args, **kwargs):
    return Response('PUT请求,响应内容')

注意:我在views文件中直接返回数据,在html模板中使用标签渲染,如果你需要使用ORM从数据库拿数据,可以做如下操作:

wheelsList = Wheel.objects.all()
name = list(Wheel.objects.values_list('name', flat=True))
data = list(Wheel.objects.values_list('trackid', flat=True))

访问url地址:

基于Django快速集成Echarts代码示例

echarts异步更新数据

test2.html文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <!-- 引入 jquery.js-->
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <!-- 引入 echarts.js -->
  {% load static %}
  <script src="{% static '/js/echarts.min.js' %}"></script>
</head>
<body>
  <div id="main" style="width: 600px;height:400px;"></div>
  <script type="text/javascript">
  $(function () {
    var server_info;
    var myChart = echarts.init(document.getElementById('main'));
    var option = {
      title: {
        text: 'ECharts 入门示例'
      },
      tooltip: {},
      legend: {
        data:['销量']
      },
      xAxis: {
        data: {{ name | safe }}
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: {{ data | safe }}
      }]
    };
    myChart.setOption(option, true);

    setInterval( function () {

        $.ajax({
          type: 'GET',
          url: '/test1_api/',
          dataType: 'json',
          success: function (arg) {
            server_info = eval(arg);
            option.xAxis.data = server_info.name;
            option.series[0].data = server_info.data;
          }
        });
          myChart.setOption(option, true);
        }, 2000);
     window.onresize = function () {
      myChart.resize();
    };
  });
  </script>
</body>
</html>

urls文件

from django.urls import path
from app.views import TestView,TestView1,TestView1api

urlpatterns = [
  path('test2/',TestView1.as_view()),
  path('test1_api/',TestView1api.as_view()),
]

View文件

from django.shortcuts import render
from rest_framework.views import View
from rest_framework.response import Response
from django.http import HttpResponse


class TestView1(View):
  def dispatch(self, request, *args, **kwargs):
    """
    请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法

    注意:APIView中的dispatch方法有好多好多的功能
    """
    return super().dispatch(request, *args, **kwargs)

  def get(self, request, *args, **kwargs):
    name = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    data = [56, 40, 54, 23, 12, 31]
    return render(request, "test2.html",{"name":name,"data":data})

  def post(self, request, *args, **kwargs):
    return Response('POST请求,响应内容')

  def put(self, request, *args, **kwargs):
    return Response('PUT请求,响应内容')


count = 1
class TestView1api(View):
  def dispatch(self, request, *args, **kwargs):
    """
    请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法

    注意:APIView中的dispatch方法有好多好多的功能
    """
    return super().dispatch(request, *args, **kwargs)

  def get(self, request, *args, **kwargs):
    global count
    name = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    data = [56+count, 40+count, 54+count, 23+count, 12+count, 31+count]
    count = count + 1
    print(data)
    print(count)
    ret = {'name': name, 'data': data}
    return HttpResponse(json.dumps(ret))


  def post(self, request, *args, **kwargs):
    return Response('POST请求,响应内容')

  def put(self, request, *args, **kwargs):
    return Response('PUT请求,响应内容')

基于Django快速集成Echarts代码示例

echarts异步加载+异步更新

在上个示例的基础上,修改test2.html如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <!-- 引入 jquery.js-->
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <!-- 引入 echarts.js -->
  {% load static %}
  <script src="{% static '/js/echarts.min.js' %}"></script>
</head>
<body>
  <div id="main" style="width: 600px;height:400px;"></div>
  <script type="text/javascript">
  $(function () {
    var server_info;
    // 基于准备好的dom,初始化ECharts实例
    var myChart = echarts.init(document.getElementById('main'));
    // 指定图表的配置项和数据
    var option = {
      title: {
        text: 'ECharts 入门示例'
      },
      tooltip: {},
      legend: {
        data: ['销量']
      },
      xAxis: {
        data: []
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: []
      }]
    };
    myChart.setOption(option, true);
    // 异步加载json格式数据
    $.getJSON('http://127.0.0.1:8080/test1_api/', function (data) {
      myChart.setOption({
        xAxis: {
          data: data.name
        },
        series: [{
          // 根据名字对应到相应的系列
          data: data.data
        }]
      });
    });
    // ajax异步更新json格式数据
    setInterval( function () {
        $.ajax({
          type: 'GET',
          url: '/test1_api/',
          dataType: 'json',
          success: function (arg) {
            server_info = eval(arg);
            option.xAxis.data = server_info.name;
            option.series[0].data = server_info.data;
          }
        });
          myChart.setOption(option, true);
        }, 2000);
     window.onresize = function () {
      myChart.resize();
     };

  });
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中处理字符串之islower()方法的使用简介
May 19 Python
20招让你的Python飞起来!
Sep 27 Python
django定期执行任务(实例讲解)
Nov 03 Python
python实现电子书翻页小程序
Jul 23 Python
python解释器spython使用及原理解析
Aug 24 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
python标准库OS模块详解
Mar 10 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
在python image 中实现安装中文字体
May 16 Python
Python turtle库的画笔控制说明
Jun 28 Python
python MD5加密的示例
Oct 19 Python
Python更改pip镜像源的方法示例
Dec 01 #Python
Python读取图像并显示灰度图的实现
Dec 01 #Python
Python性能测试工具Locust安装及使用
Dec 01 #Python
python爬虫中抓取指数的实例讲解
Dec 01 #Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 #Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 #Python
python连接mongodb数据库操作数据示例
Nov 30 #Python
You might like
php反弹shell实现代码
2009/04/22 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
Prototype使用指南之ajax
2007/01/10 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
化学教师自荐信范文
2013/12/28 职场文书
中学生个人自我评价
2014/02/06 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
挂职个人工作总结
2015/03/05 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS