加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 02:48:00 所属栏目:百科 来源:网络整理
导读:我目前正在制作一个非常依赖于图形和图表的服务器仪表板. 我在后端使用Django,在图表中使用Highcharts / Highstock(http://www.highcharts.com/)(尽管我们也在考虑D3,具体取决于进展情况). 我的问题是,生成所有图表的好方法是什么,仍然保持干燥状态? (我知
我目前正在制作一个非常依赖于图形和图表的服务器仪表板.

我在后端使用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实例化图表时使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读