如何在 JS(Django 框架)中获取 defaultdic 的值?
How to get value of defaultdic in JS (Django framework)?
我想用chartjs在页面上显示一个图表(Django框架)
views.py
chart_data = defaultdict(<class 'int'>, {'3': 2, '2': 2, '8': 2, '5': 2, '7': 1})
context["chart_data"] = chart_data
home.html
<script type="text/javascript">
var my_chart = "{{ chart_data }}";
</script>
my_chart.js
const data = {
labels: labels,
datasets: [{
label: 'My First dataset',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data: Object.values(my_chart),
}]
};
但是没有用。我用console.log(Object.values(my_chart))
查的时候发现Object.values(my_chart)
returns是['d','e','f','a' , 'u', 'l', 't', 'd', 'i', 'c', 't', '(', '&' , 'l', 't', ';', 'c', 'l', 'a', 's', 's', ' ', '&', '#', 'x', '2', '7', ';', 'i', 'n', 't', '&', '# ', 'x', '2', '7', ';', '&', 'g', 't', ';', ',', ' ', '{' , '&', '#', 'x', '2', '7', ';', '3', '&', '#', 'x', '2', ' 7', ';', ':', ' ', '2', ',', ' ', '&', '#', 'x', '2', '7', ';' , '2', '&', '#', 'x', '2', '7', ';', ':', ' ', '2', ',', ' ', ' &', '#', 'x', '2', '7', ';', '8', '&', '#', 'x', '2', '7' , ';', ':', ' ', '2', ',', ' ', '&', '#', ...],它只是拆解了字典中的每个字母和符号。
你知道我怎样才能得到这个值吗?
您不应通过在模板中呈现对象来传递 javascript。这将使它像对象的 str(…)
一样呈现。对于某些对象,这可能会生成有效 JavaScript 表达式的文本,但通常不会像这里的情况那样。
您可以利用 |json_script:…
template filter [Django-doc] 将数据呈现为 JSON 对象,然后将其加载到 JavaScript 脚本中,因此:
{{ chart_data|json_script:"my_chart" }}
<script type="text/javascript">
var my_chart = JSON.parse(document.getElementById('my_chart').textContent)
const data = {
labels: labels,
datasets: [{
label: 'My First dataset',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data: Object.values(my_chart),
}]
};
</script>
我想用chartjs在页面上显示一个图表(Django框架)
views.py
chart_data = defaultdict(<class 'int'>, {'3': 2, '2': 2, '8': 2, '5': 2, '7': 1})
context["chart_data"] = chart_data
home.html
<script type="text/javascript">
var my_chart = "{{ chart_data }}";
</script>
my_chart.js
const data = {
labels: labels,
datasets: [{
label: 'My First dataset',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data: Object.values(my_chart),
}]
};
但是没有用。我用console.log(Object.values(my_chart))
查的时候发现Object.values(my_chart)
returns是['d','e','f','a' , 'u', 'l', 't', 'd', 'i', 'c', 't', '(', '&' , 'l', 't', ';', 'c', 'l', 'a', 's', 's', ' ', '&', '#', 'x', '2', '7', ';', 'i', 'n', 't', '&', '# ', 'x', '2', '7', ';', '&', 'g', 't', ';', ',', ' ', '{' , '&', '#', 'x', '2', '7', ';', '3', '&', '#', 'x', '2', ' 7', ';', ':', ' ', '2', ',', ' ', '&', '#', 'x', '2', '7', ';' , '2', '&', '#', 'x', '2', '7', ';', ':', ' ', '2', ',', ' ', ' &', '#', 'x', '2', '7', ';', '8', '&', '#', 'x', '2', '7' , ';', ':', ' ', '2', ',', ' ', '&', '#', ...],它只是拆解了字典中的每个字母和符号。
你知道我怎样才能得到这个值吗?
您不应通过在模板中呈现对象来传递 javascript。这将使它像对象的 str(…)
一样呈现。对于某些对象,这可能会生成有效 JavaScript 表达式的文本,但通常不会像这里的情况那样。
您可以利用 |json_script:…
template filter [Django-doc] 将数据呈现为 JSON 对象,然后将其加载到 JavaScript 脚本中,因此:
{{ chart_data|json_script:"my_chart" }} <script type="text/javascript"> var my_chart = JSON.parse(document.getElementById('my_chart').textContent) const data = { labels: labels, datasets: [{ label: 'My First dataset', backgroundColor: 'rgb(255, 99, 132)', borderColor: 'rgb(255, 99, 132)', data: Object.values(my_chart), }] }; </script>