2014-11-02 14 views
1

我忙于使用Django应用程序分析各种数据(主要是使用熊猫),然后使用Google图表显示结果。从Django到Javascript的Python数据

我很难搞清楚从django view.py传递数据的最佳方式,它通常会在熊猫数据框或字典中,以便在模板文件中使用(使用JavaScript来表示谷歌图表)。

下面是一些代码,显示了用于显示其中一个图表的javascript函数。在这个例子中,我将数据硬编码到图表中(即:年份和销售额已手动输入)。然而,需要做的是使用熊猫数据框中的数据。

function drawChart() { 

    var data = google.visualization.arrayToDataTable([ 
     ['Year', 'Sales'], 
     ['2004', 1000], 
     ['2005', 1170], 
     ['2006', 660], 
     ['2007', 1030] 
    ]); 

    var options = { 
     title: 'Company Performance', 
     hAxis: {title: 'Year', titleTextStyle: {color: 'red'}} 
    }; 

    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); 
    chart.draw(data, options); 
    } 

使用django模板语言{{var}}很容易通过单个变量或列表。然而,我不完全确定如何通过更复杂的数据框,字典等在JavaScript函数中使用。

非常感谢。

+0

你要传递的数据或期权或两者兼而有之? – laike9m 2014-11-02 11:57:24

+0

我想从熊猫数据帧传递数据 – darkpool 2014-11-02 11:59:58

回答

1

这是你想要的吗?

views.py:

import json 

def some_view_func(request): 
    data = [ 
     ['Year', 'Sales'], 
     ['2004', 1000], 
     ['2005', 1170], 
     ['2006', 660], 
     ['2007', 1030] 
    ] 
    render(request, 'template.html', {'data': json.dumps(data)}) 

template.html

<script> 
    var data = google.visualization.arrayToDataTable(JSON.parse({{data}})); 
</script> 
+0

谢谢你的回复。不幸的是,这似乎并不奏效。然而,我的模板加载的图表应该是什么都没有。 – darkpool 2014-11-02 15:04:45

+0

@darkpool你是什么意思'没有什么'? – laike9m 2014-11-02 15:26:03

+0

我的模板应该显示一个条形图。这就是javascript函数的功能。但是,在尝试您的建议时,不会显示条形图。没有显示,即:它不起作用。如果有帮助,我使用的google图表代码来自https://developers.google.com/chart/interactive/docs/gallery/columnchart。所以我需要用一个通过views.py – darkpool 2014-11-02 15:31:24

1

这是为了实现我想你想

def view_func(request): 
    data =pd.DataFrame(np.random.randn(20, 5)) 

    render(request, 'template.html', {'data': data.to_html()}) 

见的方式documentation额外有关CSS样式和其他内容的详细信息。

在模板中还实现了数据的“安全”,如下所示:

{{ data | safe }} 
+0

谢谢你试图帮助。但是,我的模板加载,但没有条形图。没有显示。 – darkpool 2014-11-02 15:14:38

+0

有一个库[django-pandas](https://pypi.python.org/pypi/django-pandas/0.2.0)用于这类工作。看到它可能会帮助 – abhi 2014-11-02 19:31:37

+0

或在views.py中跳到to.html()并执行此操作。{{data.to_html(classes =“table table-striped”)|安全}}在你的模板中 – abhi 2014-11-02 19:42:21

相关问题