微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – Django和Highcharts – 生成图表,仍然是DRY?

我目前正在制作一个非常依赖于图形和图表的服务器仪表板.

我在后端使用Django,在图表中使用Highcharts / Highstock(http://www.highcharts.com/)(尽管我们也在考虑D3,具体取决于进展情况).

我的问题是,生成所有图表的好方法是什么,仍然保持干燥状态?

(我知道Django-Chartit,但它对我们的目的有点限制,并没有为我们提供一些我们需要的可定制性).

1.如何检索数据

首先,我最好是为JavaScript内部的图形编码数据.例如.:

series: [{
    name: 'Virtualised',data: [80,81,84,85,80,90,88,89,90]
    },{
    name: 'Physical',data: [15,14,12,8,10,9]
    }]

或者我应该通过AJAX调用检索所有数据 – 例如JSON通过Query.get()?

2.动态生成Javascript

如果我们使用选项1并将数据直接编码到JavaScript中,我该如何动态生成这些Javascript文件

目前,我们的JS直接由我们的网络服务器(Nginx)提供服务.或者我应该使用内联<脚本>在我的HTML文件标记

3.使用AJAX的安全性/性能

如果我们按下选项2 JSON / AJAX路由 – 在一个页面上说二十个JQuery.get()调用会有性能问题吗?我不知道有什么方法可以批量处理它们吗?

那么安全性 – 我们只想将AJAX端点暴露给图表,但是你怎么能允许它但不让任何人直接调用那个URL?

干嘛

无论哪种方式,我都注意到我们对所有这些图表都有重复堆叠.

减少这种情况的最佳方法是什么?图表的模板标签?或者有更聪明的方法吗?

干杯,
胜利者

解决方法

>取决于数据的大小.如果你有大型数据集而不需要立即显示所有图表 – 当然你应该使用AJAX.否则,编码成js是可以的. >您可以添加一些URL,例如/data/some_data.js,它们将由Django(带或不带模板系统)呈现,并提供该文件中的数据.下面将调用Highcharts脚本并使用该数据. >如果使用ajax,则可以使用相同的方法 – 检索一大包数据(例如,使用哈希数组),然后一次使用一部分数据创建图表.出于安全原因,您可以在此处使用Django的CSRF – 创建一个仅包含令牌的空表单,并将其与请求一起发布.在服务器端,您只需要拒绝对该URL的GET访问,使用基于类的视图或对request.method进行简单检查. >如果您使用一个数据包,则可以在其中添加块ID,标题和其他元数据,并在使用JS实例化图表时使用它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐