我在Django中有一个由我的www.example.com生成的python列表,我想把它传递给我的HTML模板中的javascript。我似乎不能把它作为数组传递给javascript ...我需要评估列表/数组是否包含某些数字,但它是作为字符串传递过来的。views.py in Django, and I would like to pass it to javascript in my HTML template. I cannot seem to get it into javscript as an array... I need to evaluate if the list/array contains certain numbers, but it is coming over as a string.
我将列表传递给HTML模板,如下所示:
def get_context_data(self, **kwargs):
context = super(dashboardView, self).get_context_data(**kwargs)
mylist = [10,22,33,45]
context['mylist'] = mylist
return context
当我使用:
<h1 id = "list"> {{mylist}}</h1>
它在浏览器上显示为[10,22,33,45]
然后在我的模板中,我使用javascript我有:
var mylist = document.getElementById("list").innerHTML;
for(i = 0; i < mylist.length; i++){
console.log(mylist[i])
};
这将在控制台中返回:
'
[
1
0
,
2
2
........
我想要:
10
22
33
45
我试过用python转换成JSON,然后用javascript解析,但是似乎不能把这个字符串转换成数组,或者总是出错。
6条答案
按热度按时间6gpjuf901#
如果你绝对确定你的列表是安全的(我的意思是它永远不会包含用户输入的任何内容),这是非常简单的。
你认为:
在模板中:
呈现为:
例如:
令人印象深刻的是,如果你传递一个带撇号的字符串,Django会自动改变引号类型,所以
呈现为(注意双引号):
所以
仍然工作(测试Django 3.2.6)。
即使这样也行得通:
渲染为:
所以
然而,正如我在前面所说的,如果您的列表可能包含来自用户的输入,我仍然不相信这种方法。
编辑:现在这是最高的答案,我想添加一个更安全的方法,使它更容易完全安全。这是有趣的django-argonauts,虽然我不是一个安全Maven,所以不能确认的方法:
然后在模板中:
wgmfuz8q2#
在视图中,可以将对象设置为JSON对象:
现在你可以在JavaScript中使用你的对象了:
n1bvdmb63#
您可以简单地使用
tojson
标记将python列表转换为js数组。就像-
试试看,如果有问题就告诉我。
0kjbasz64#
Django有
json_script
模板标记,它通过转义<
、>
和&
字符来解决XSS漏洞。Django
json_script
文档在此8hhllhi25#
在您的例子中,一个简单的方法是将列表作为字符串
','.join(mylist)
发送,然后在模板中,您可以简单地在js
中使用split(',')
。视图
html和js
或者如果您的js也在模板中
mlmc2os56#
用JavaScript而不是HTML设置列表值。
您需要在HTML模板文件中执行此操作,而不是在外部JS文件中。