Python 与Flask中的ChartJS交互
我真的不知道在这里该做什么。我有一个python脚本,它可以做一些很酷的事情,然后通过一些图表显示这些很酷的事情 我看到它是通过Flask和ChartJS完成的,但是我看到的每个网站都使用它来显示静态内容,当然,这不是我需要的 我已尝试使用此模板执行此操作:Python 与Flask中的ChartJS交互,python,flask,chart.js,Python,Flask,Chart.js,我真的不知道在这里该做什么。我有一个python脚本,它可以做一些很酷的事情,然后通过一些图表显示这些很酷的事情 我看到它是通过Flask和ChartJS完成的,但是我看到的每个网站都使用它来显示静态内容,当然,这不是我需要的 我已尝试使用此模板执行此操作: <!doctype html> <html> <head> <title>Line Chart</title> <script src="/static/c
<!doctype html>
<html>
<head>
<title>Line Chart</title>
<script src="/static/chartjs/Chart.min.js"></script>
<script src="/static/chartjs/utils.js"></script>
<style>
canvas{
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
</style>
</head>
<body>
<div style="width:75%;">
<canvas id="canvas"></canvas>
</div>
<br>
<br>
<button id="randomizeData">Randomize Data</button>
<button id="addDataset">Add Dataset</button>
<button id="removeDataset">Remove Dataset</button>
<button id="addData">Add Data</button>
<button id="removeData">Remove Data</button>
<script>
var MONTHS = [];
var config = {
type: 'line',
data: {
labels: ['1/05/19\n00:57', '1/05/19\n00:58', '1/05/19\n00:59', '1/05/19\n01:00', '1/05/19\n01:01', '1/05/19\n01:02', '1/05/19\n01:03'],
{{ dataset }}
},
options: {
responsive: true,
title: {
display: true,
text: 'Chart.js Line Chart'
},
tooltips: {
mode: 'index',
intersect: false,
},
hover: {
mode: 'nearest',
intersect: true
},
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'Month'
}
}],
yAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'Value'
}
}]
}
}
};
window.onload = function() {
var ctx = document.getElementById('canvas').getContext('2d');
window.myLine = new Chart(ctx, config);
};
document.getElementById('randomizeData').addEventListener('click', function() {
config.data.datasets.forEach(function(dataset) {
dataset.data = dataset.data.map(function() {
return randomScalingFactor();
});
});
window.myLine.update();
});
var colorNames = Object.keys(window.chartColors);
document.getElementById('addDataset').addEventListener('click', function() {
var colorName = colorNames[config.data.datasets.length % colorNames.length];
var newColor = window.chartColors[colorName];
var newDataset = {
label: 'Dataset ' + config.data.datasets.length,
backgroundColor: newColor,
borderColor: newColor,
data: [],
fill: false
};
for (var index = 0; index < config.data.labels.length; ++index) {
newDataset.data.push(randomScalingFactor());
}
config.data.datasets.push(newDataset);
window.myLine.update();
});
document.getElementById('addData').addEventListener('click', function() {
if (config.data.datasets.length > 0) {
var month = MONTHS[1];
config.data.labels.push(month);
config.data.datasets.forEach(function(dataset) {
dataset.data.push(randomScalingFactor());
});
window.myLine.update();
}
});
document.getElementById('removeDataset').addEventListener('click', function() {
config.data.datasets.splice(0, 1);
window.myLine.update();
});
document.getElementById('removeData').addEventListener('click', function() {
config.data.labels.splice(-1, 1); // remove the label first
config.data.datasets.forEach(function(dataset) {
dataset.data.pop();
});
window.myLine.update();
});
</script>
</body>
</html>
现在,不幸的是,这没有表现出任何东西。我很确定这是由于标签:'label'代码>转义到'标签'代码>
我已经搜索过这个问题,显然我尝试做的javascript注入操作已经被删除,因为它代表了一个安全漏洞
这个项目实际上只是另一个小型python项目的仪表板,我只会使用它,所以我试图快速、轻松地构建一些东西,但结果很麻烦://您好,我一直在搜索这个项目,并使用|safe
找到了这个项目,您能试试看它是否有效吗,这可能不是最好的方法,但由于仪表板仅由您使用。您好,我一直在搜索此信息,并使用|safe
发现此信息,您能否尝试一下,看看它是否有效,这可能不是最好的方法,但由于仪表板仅由您使用。
def generate_dataset(self):
data = 'datasets: ['
for post_list_index, post in enumerate(self.post_list):
data = data + "{label: '" + post + "', backgroundColor: window.chartColors.red, borderColor: window.chartColors.red, data: ["
for index, history in enumerate(self.submissions_score_history):
score = history[post_list_index]
if index < len(self.submissions_score_history) - 1:
data = data + str(score) + ','
else:
data = data + str(score)
data = data + '],fill: false,}'
if post_list_index < len(self.post_list) - 1:
data = data + ','
else:
pass
data = data + ']'
return data