Python 在views.py中构建highcarts选项
避免评估 我的问题已经得到了回答,我最终使用了eval,但在搜索了eval的功能和能力之后,我最终没有使用它,而是使用了一个在这里找到的替代方法:Python 在views.py中构建highcarts选项,python,django,highcharts,Python,Django,Highcharts,避免评估 我的问题已经得到了回答,我最终使用了eval,但在搜索了eval的功能和能力之后,我最终没有使用它,而是使用了一个在这里找到的替代方法: 在我的应用程序中,我在后端构建整个图表选项,并将其作为json响应返回 def get_chart_data(request): chart = { 'title': { 'text': '' }, 'xAxis': { 'categories'
在我的应用程序中,我在后端构建整个图表选项,并将其作为json响应返回
def get_chart_data(request):
chart = {
'title': {
'text': ''
},
'xAxis': {
'categories': [],
'title': {
'text': ''
},
'type': 'category',
'crosshair': True
},
'yAxis': [{
'allowDecimals': False,
'min': 0,
'title': {
'text': ''
}
}, {
'allowDecimals': False,
'min': 0,
'title': {
'text': ''
},
'opposite': True
}],
'series': [{
'type': 'column',
'yAxis': 1,
'name': '',
'data': []
}, {
'type': 'line',
'name': '',
'data': []
}, {
'type': 'line',
'name': '',
'data': []
}]
}
return JsonResponse(chart)
然后使用ajax获取数据,并对数据使用响应
Highcharts.chart('dashboard1',数据)代码>
到目前为止,我对此没有意见,但如果我想将highcharts函数用作选项的一部分,例如使用highcharts.getOptions().colors[0]
设置文本的颜色,我会遇到问题
'title': {
'text': 'Rainfall',
'style': {
'color': Highcharts.getOptions().colors[0]
}
},
如果我在views.py
中构建选项时不对此加引号,它将被视为python代码并导致错误,但是如果我在其中添加引号,它将被视为javascript中的字符串,这将不起作用
这可能吗?或者我应该只在javascript中构建选项,只在后端获取数据部分,而不是全部。您可以在Django中以字符串形式返回JS代码,然后您可以在其上运行,但是执行这样的代码会导致XSS攻击的可能性,特别是当信息是用户可提交的时候
如果可能的话,最好在JS端创建样式,并处理传入的数据
document.querySelector('a')。addEventListener('click',函数(e){
e、 预防默认值();
var complexJson={“父”:{“子”:“警报('这里是嵌套警报!')”}
var alertString=“alert('这是一个简单的警报!')”;
eval(complexJson[“父”][“子”])
评估(警报字符串)
})
如何向json中的特定行/值添加eval()
?如何将此“颜色”:“Highcharts.getOptions().colors[0]”
转换为此<代码>'color':eval('Highcharts.getOptions().colors[0]”)您可以使用类似这样的方式轻松访问该子项:数据['style]['color]
-我还更新了我的答案以向您展示一个示例谢谢,我使用数据['title']['style'['color']]=eval(数据['title'['style']['color'])更改了键的值。
,我将确保不评估任何与用户输入相关的内容。