用Django渲染HighStock帮助我
我希望有人能帮我解决我的代码问题。我把一个例子从fiddle修改了一下,让它能在Django这个网页框架下工作,但我调试的时候发现没有任何错误提示,图表也没有显示出来。这实在是太奇怪了。基本上,我是把json数据源重定向到读取我自己本地的数据。
到目前为止,我在home.html里写了以下代码:
<script src="/static/js/jquery-2.1.0.min.js"></script>
<script src="/static/js/stock/highstock.js"></script>
<script src="/static/js/stock/modules/exporting.js"></script>
<div id="stock_panel" class="stock-body" style="width:100%;height:314px"></div>
<script type="text/javascript">
$(function(){
var chartDataUrl = "{% url 'chartFishPrice' %}";
$.getJSON(chartDataUrl,
function(data) {
// Create the chart
$('#stock_panel').highcharts('StockChart', {
rangeSelector : {
selected : 1,
inputEnabled: $('#stock_panel').width() > 480
},
title : {
text : 'fish Price'
},
series : [{
name : 'chart_data',
data : data,
tooltip: {
valueDecimals: 2
}
}]
});
});
});
</script>
这是views.py的内容:
def chartFishPrice(request):
ff = FishCaught.objects.filter(fish_id=1)
data = {'dates': [], 'values': []}
for f in ff:
data['dates'].append(int(f.date_caught.strftime("%s")))
data['values'].append(int(f.num_caught))
data2 = {}
data2['chart_data'] = data
print data2
return HttpResponse(json.dumps(data2), content_type='application/json')
还有urlpatterns的设置:
url(r'^chartFishPrice/$', 'fish.views.chartFishPrice', name='chartFishPrice'),
我已经仔细检查过我的json数据格式是这样的:
{"chart_data": {"dates": [1396310400, 1396396800, 1396483200, 1396569600], "values": [2, 3, 2, 4]}}
为了对比,这里是例子中的样本数据:
[
/* May 2006 */
[1147651200000,67.79],
[1147737600000,64.98],
[1147824000000,65.26]]
这真是让人困惑。我非常感谢你们能提供的任何帮助。谢谢。
1 个回答
0
但是这些数据的格式看起来完全不一样。你有一个对象,它包含两个数组,一个是“日期”,另一个是“数值”。而示例数据则是一个数组的数组,每个子数组里包含一个日期和一个数值。
如果你想让格式和示例一样,你的视图应该像这样:
data = []
for f in ff:
date = int(f.date_caught.strftime("%s"))
value = int(f.num_caught)
date.append([date, value])