Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax Django和Highcharts-生成图表,但仍处于干燥状态?_Ajax_Django_Json_Charts_Highcharts - Fatal编程技术网

Ajax Django和Highcharts-生成图表,但仍处于干燥状态?

Ajax Django和Highcharts-生成图表,但仍处于干燥状态?,ajax,django,json,charts,highcharts,Ajax,Django,Json,Charts,Highcharts,我目前正在制作一个服务器仪表板,它非常依赖于图形和图表 我在后端使用Django和Highcharts/Highstock(http://www.highcharts.com/)对于图表(尽管我们也在看D3,这取决于进展情况) 我的问题是,什么是生成所有图形并保持干燥的好方法 (我知道Django Chartit,但它对我们的用途来说有点有限,不能提供我们所需要的一些定制功能) 1。如何检索数据 首先,我最好在JavaScript本身中为图形编码数据。例如: series: [{ nam

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

我在后端使用Django和Highcharts/Highstock(http://www.highcharts.com/)对于图表(尽管我们也在看D3,这取决于进展情况)

我的问题是,什么是生成所有图形并保持干燥的好方法

(我知道Django Chartit,但它对我们的用途来说有点有限,不能提供我们所需要的一些定制功能)

1。如何检索数据

首先,我最好在JavaScript本身中为图形编码数据。例如:

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调用检索所有数据,例如通过
Query.get()检索JSON

2。动态生成Javascript

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

目前,我们的JS直接由我们的web服务器(NGinx)提供服务。还是应该在HTML文件中使用内联的
标记

3。AJAX的安全性/性能

如果我们选择JSON/AJAX路由选项2,那么在一个页面上调用二十个JQuery.get()
调用会不会出现性能问题?我不知道有什么方法可以把它们全部分批

那么安全性呢?我们只想将AJAX端点公开给图表,但是您如何允许这样做,而不让任何人直接调用该URL

4。干燥

不管怎样,我注意到所有这些图表都有大量重复

最好的办法是什么?图表的模板标签?还是有更聪明的方法

干杯, 胜利者

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