如何从Django View将两个列表返回给chartjs

时间:2019-06-12 20:31:09

标签: django list chart.js

我正在使用chartjs渲染条形图。为此,我需要以[1、2、3]和[3、2、1]这样的格式传递两个列表。我正在对Django进行AJAX调用,该调用返回了两个列表(我尚未添加代码来从数据库中获取数据)。该图形对于一个列表来说效果很好,但不确定如何传递第二个列表。

我尝试将两个列表作为json传递,并尝试在ajax调用的成功函数中使用每个列表,但是该图形无法正确呈现。有一个列表,该图就可以正常工作

下面是ChartJs AJAX调用的代码

$.ajax({  
    async: pasys,  
    type: "GET",  
    url: purl,  
    data: pdata,  
    contentType: "application/json; charset=utf-8",  
    dataType: "json",  
    success: function(ldata) {  
        var barData = {  
        labels: ["Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",   
                  "Nov", "Dec", "Jan", "Feb", "Mar"],  
        datasets: [  
        {  
            label: "DL1",  
            backgroundColor: 'rgba(220, 220, 220, 0.5)',    
            pointBorderColor: "#fff",  
            data: ldata.data1  
        },  
        {  
            label: "Non-DL1",  
            backgroundColor: 'rgba(100, 200, 300, 0.5)',  
            pointBorderColor: "#aaa",  
            data: ldata.data2  
         }  
       ]  
     };

     var barOptions = { 
         responsive: true
     };

     var ctx2 = 
       document.getElementById("opendemandtrend").getContext("2d");
       new Chart(ctx2, {type: 'bar', data: barData, options:barOptions});

*以下是django视图的代码*

    def gldh_productivitymetric_opendemandtrend_get(request):  
    lcompanyid = request.GET.get("pcompanyid")  
    lpmid      = request.GET.get("ppmid")  

    data = json.dumps({"data1": "[12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]",  
                       "data2": "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]"})  

    return HttpResponse(data, content_type="application/json")  

1 个答案:

答案 0 :(得分:0)

您正在传递字符串作为值,而不是列表。不要那样做。

data = json.dumps({"data1": [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],  
                   "data2": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]})