• Django工程中使用echarts怎么循环遍历显示数据


    前言: 后面要开发测试管理平台,需要用到数据可视化,所以研究了一下

    先看下最后的图吧,单击最上方的按钮可以控制柱状图显隐

     views.py

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    import json
    from django.shortcuts import render
    import pymysql
    
    
    def showcase(request):
        """
        从数据库中读取作者的用例信息,并用于前台可视化展示
        :param request:
        :return:
        """
        db = pymysql.connect("localhost", "root", "guchen", "guchen_test", charset='utf8')
        cursor = db.cursor()
        sql = "select * from userCaseInfo"
        cursor.execute(sql)
        results = cursor.fetchall()
        print results
        # 向js中传递数据必须json.dumps()处理
        return render(request, "showcase.html", {'caseInfo': json.dumps(list(results))})

     showcase.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>showcase</title>
        {#    引入jQuery#}
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <!-- 引入本地的 echarts.js -->
        <script src="../static/js/echarts.js"></script>
    </head>
    <body>
         <div id="main" style=" 1000px;height: 500px">
             {% block content %}
        <!--echarts图表-->
        <script type="text/javascript">
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('main'));
    
    
            // 显示标题,图例和空的坐标轴
    myChart.setOption({
        legend: {},
        tooltip: {},
        dataset: {
            source: [
                [],
                [], //这里一定要把最内层的数据清除掉
                []
            ]
        },
        xAxis: {type: 'category'},
        yAxis: {},
        // Declare several bar series, each will be mapped
        // to a column of dataset.source by default.
        series: [
            {type: 'bar'},
            {type: 'bar'},
            {type: 'bar'}
        ]
    });
    
        var caseInfo={}; //请求前先不要获取后端返回的数据,先定义空的字典(去掉也没事)
        // 注意这里的参数值,showcase表示视图函数,caseInfo是后台传过来的数据
        $.get('/showcase/').done(function (caseInfo) {
            caseInfo = {{ caseInfo|safe}}; // 获取后台传来的数据需要加上safe过滤
            uname = caseInfo[0][1]
            // 将source中不变的第一个列表元素初始化进来
            var source = [['product', '总数', '成功', '失败']];
            // 使用for循环将caseInfo中的数据循环遍历push进source列表中
            for(var i=0; i< caseInfo.length;i++)
            {
                source.push([caseInfo[i][1], caseInfo[i][2], caseInfo[i][3], caseInfo[i][4]])
                myChart.setOption({
                    dataset: {
                        // 引用添加了数据的变量source
                        source: source
                    }
                });
            }
         });
        </script>
    {% endblock %}
        </div>
    
    </body>
    </html>

     使用的Echarts模板是:

    option = {
        legend: {},
        tooltip: {},
        dataset: {
            source: [
                ['product', '总数', '成功', '失败'],
                ['Matcha Latte', 43.3, 85.8, 93.7],
                ['Milk Tea', 83.1, 73.4, 55.1],
                ['Cheese Cocoa', 86.4, 65.2, 82.5],
                ['Walnut Brownie', 72.4, 53.9, 39.1]
            ]
        },
        xAxis: {type: 'category'},
        yAxis: {},
        // Declare several bar series, each will be mapped
        // to a column of dataset.source by default.
        series: [
            {type: 'bar'},
            {type: 'bar'},
            {type: 'bar'}
        ]
    };
  • 相关阅读:
    用代码关闭冰刃(IceSword)
    .h和.cpp文件的区别
    获取其他进程的命令行(ReadProcessMemory其它进程的PPROCESS_PARAMETERS和PEB结构体)
    C#调用记事本并填写内容
    C#中比较两个对象的地址是否相同(也是引用计数的问题,和Java一样)
    JS代码的几个注意点规范
    javascript常用知识点集
    网站静态化处理—满足静态化的前后端分离(9)
    网站静态化处理—前后端分离—下(8)
    JS对文档进行操作
  • 原文地址:https://www.cnblogs.com/gcgc/p/10087405.html
Copyright © 2020-2023  润新知