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实例化图表时使用它.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |