将Django变量发送到javascript

将Django变量发送到javascript,javascript,django,Javascript,Django,我正在尝试访问一个Django占位符,它是数据库中的一个数组,它是一个javascript脚本,可在three.js中使用 我在views.py中有coord_x、coord_y和coord_z变量,这些变量通过以下方式来自数据库: cur.execute("""SELECT x FROM pc_processing.basesample""") coord_x = cur.fetchall() cur.execute("""SELECT y FROM pc_processing.basesam

我正在尝试访问一个Django占位符,它是数据库中的一个数组,它是一个javascript脚本,可在three.js中使用

我在views.py中有
coord_x
coord_y
coord_z
变量,这些变量通过以下方式来自数据库:

cur.execute("""SELECT x FROM pc_processing.basesample""")
coord_x = cur.fetchall()
cur.execute("""SELECT y FROM pc_processing.basesample""")
coord_y = cur.fetchall()
cur.execute("""SELECT z FROM pc_processing.basesample """)
coord_z = cur.fetchall()
在我的html模板中(随机测试编号注释掉,适合测试):

。。。
对于(变量i=0;i
我想我需要以某种方式循环x、y、z变量?

您可以这样尝试:

coordinates.forEach(function(i){
...
dotGeometry.vertices.push(new THREE.Vector3(i.x, i.y, i.z));
...
}
通过
views.py中的上下文发送变量:

context = { 'coord_x': 20, 'coord_y': 10, 'coord_z': 30}
return render(request, 'template.html', context)
context = { 'coordinates': [{'x':1, 'y':2, 'z':3}, {'x':1, 'y':2, 'z':4}] }
return render(request, 'template.html', context)
在模板中,将变量附加到
窗口
对象:

<script>
window.x = "{{coord_x}}"
window.y = "{{coord_x}}"
window.z = "{{coord_x}}"
</script>
更好的方法是将这些变量不是作为列表发送,而是作为字典发送。在
views.py中类似这样:

context = { 'coord_x': 20, 'coord_y': 10, 'coord_z': 30}
return render(request, 'template.html', context)
context = { 'coordinates': [{'x':1, 'y':2, 'z':3}, {'x':1, 'y':2, 'z':4}] }
return render(request, 'template.html', context)
在JS中附加它们:

<script>
window.coordinates = "{{ coordinates }}";
</script>

我假设上下文=。。。进入views.py?window.x在我设置的循环中是如何工作的?好的,我想我现在已经知道了,但是数据“上下文”来自三个单独的
cur.fetchall
,而不是一个字典,原始的后期修改。与其使用原始sql,不如使用Django模型?如果你这样做了,你可以通过这本书中提到的字典,所以回答: