【发布时间】:2021-02-28 14:23:56
【问题描述】:
我最近尝试用烧瓶制作仪表板,其中包含来自 mongodb 的数据。但我无法将数据发送到 chart.js。我从 mongodb 获取数据并发送到 javascript 并尝试使用 jinja2 循环数据。
@app.route("/dashboard")
def dashboard():
limit = request.args.get("limit",12,type=int)
dashboardDatas = mongo.db.dashBoard
dashDatas = dashboardDatas.find().limit(limit)
return render_template("dashboard.html", dashDatas = dashDatas)
<canvas id="myChart" height="50"></canvas>
<script>
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: [ {% for item in dashDatas %}
'{{item._id}}',
{% endfor %} ],
datasets: [{
label: '# of Votes',
data: [ {% for item in dashDatas %}
{{item.logistic}},
{% endfor %}],
borderColor: [
'rgba(255, 99, 132, 1)',
],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
],
borderWidth: 0.5
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
</script>
我得到了空图表。我做错了什么?
【问题讨论】:
-
我对python有一点了解,通常在js中for循环用于迭代它不会返回一个数组,我觉得你可以检查一下
-
只是尝试而不是循环传递数据集和标签作为这样的数组,并在 python 代码中创建数组。 => return render_template("dashboard.html", dashDatas = dashDatas, labels = labels, datasets = datasets)
-
附上生成的 HTML 会有所帮助。
-
能否请您包含
print(dashDatas)的输出(如果很长,则粘贴bin 链接)
标签: javascript python flask jinja2 pymongo