我目前正在制作一个非常依赖图形和图表的服务器仪表板。
我在后端使用Django,在图表中使用Highcharts / Highstock(http://www.highcharts.com/)(尽管我们也在考虑D3,具体取决于进展情况)。
我的问题是,生成所有图表的好方法是什么,仍然保持干燥状态?
(我知道Django-Chartit,但它对我们的目的有点限制,并没有为我们提供一些我们需要的可定制性。)
1。如何检索数据
首先,我最好为JavaScript内部的图形编码数据。 E.g:
series: [{
name: 'Virtualised',
data: [80, 81, 84, 84, 85, 80, 90, 85, 80, 88, 89, 90]
}, {
name: 'Physical',
data: [15, 14, 12, 8, 10, 12, 12, 14, 10, 12, 8, 9]
}]
或者我应该通过AJAX调用检索所有数据 - 例如JSON通过Query.get()
?
2。动态生成Javascript
如果我们使用选项1并将数据直接编码到JavaScript中,我该如何动态生成这些Javascript文件?
目前,我们的JS直接由我们的网络服务器(NGinx)提供服务。或者我应该在HTML文件中使用内联<script>
标记吗?
第3。使用AJAX的安全性/性能
如果我们在选项2中关闭JSON / AJAX路由 - 在一个页面上发出20个JQuery.get()
个呼叫会有性能问题吗?我不知道有什么方法可以批量处理它们吗?
那么安全性 - 我们只想将AJAX端点暴露给图表,但是你怎么能允许这样做但不让任何人直接调用那个URL?
4。 DRY
无论哪种方式,我都注意到我们对所有这些图表都有重复的叠加。
减少这种情况的最佳方法是什么?图表的模板标签?或者有更聪明的方法吗?
干杯, 维克多
答案 0 :(得分:2)
/data/some_data.js
,这些网址将由Django呈现(有或没有模板系统)并在该文件中提供数据。下面将调用Highcharts脚本并使用该数据。