我正在创建一个Web应用程序,我需要创建一些图表。我使用Django 3和ChartJS。我已经为标签创建了一个列表,为要插入到ChartJS中的数据创建了一个列表。我遇到的问题是,无论我尝试或做什么,数据都不会显示在图表中。当我试图通过在页面上写入数据来访问数据时,它确实工作,但由于某种原因,当将其插入ChartJS时,它根本不工作。
根据ChartJS文档,数据字段可以接收值列表,所以我不明白为什么这不起作用。
我用google和stackoverflow搜索了很多解决方案,虽然我在stackoverflow上找到了一些类似的线程,但这些解决方案对我不起作用。我尝试转换为json,其他插入数据的方法,使用for循环等,但无论我做什么,似乎都不起作用。
在Web应用程序中,标签和值是动态创建的,但为了更容易地解决问题,我手动创建了两个列表,并试图将它们发送到模板并将其插入ChartJS中,这也不起作用。
这是我目前使用的代码:
views.py:
def check_spending(request):
graph_labels = ["Test1", "Test2", "Test3"]
graph_values = ["100", "50", "20"]
return render(request, 'spending/view_spending.html',
{'graph_labels': graph_labels,
'graph_values': graph_values})
HTML:
<!-- Values are printed out here -->
{{ graph_labels }}
{{ graph_values }}
for loop
{% for key in graph_labels %}
{{ key }}
{% endfor %}
<!-- Values does not work here -->
<canvas id="spending_overview_detailed" width="400" height="400"></canvas>
<script>
var ctx = document.getElementById('spending_overview_detailed');
var spending_overview_detailed = new Chart(ctx, {
type: 'bar',
data: {
labels: [{{ graph_labels }}],
datasets: [{
label: 'Spending',
data: [{{ graph_values }}],
borderWidth: 1
}],
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
2条答案
按热度按时间daolsyd01#
我最终将标签和数据字段更改为以下内容:
注意for循环中的逗号,如果没有它,值将无法正确处理。
8ulbf1ek2#
{{ graph_labels }}和{{ graph_values }}是Django模板变量,你试图在JavaScript中访问它们,这将不起作用。使用模板标签“json_script”Django文档将数据从django模板传递到您的JavaScript。