Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Python 在views.py中构建highcarts选项_Python_Django_Highcharts - Fatal编程技术网

Python 在views.py中构建highcarts选项

Python 在views.py中构建highcarts选项,python,django,highcharts,Python,Django,Highcharts,避免评估 我的问题已经得到了回答,我最终使用了eval,但在搜索了eval的功能和能力之后,我最终没有使用它,而是使用了一个在这里找到的替代方法: 在我的应用程序中,我在后端构建整个图表选项,并将其作为json响应返回 def get_chart_data(request): chart = { 'title': { 'text': '' }, 'xAxis': { 'categories'

避免评估

我的问题已经得到了回答,我最终使用了eval,但在搜索了eval的功能和能力之后,我最终没有使用它,而是使用了一个在这里找到的替代方法:


在我的应用程序中,我在后端构建整个图表选项,并将其作为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'])更改了键的值。
,我将确保不评估任何与用户输入相关的内容。