将Django字符串列表作为数组传递给JS

问题描述 投票:0回答:1

目标:我想将Django中的字符串列表传递给模板JS作为字符串数组并获取数组中每个字符串的索引。

问题:Javascript indexOf()正在计算每个字符(例如字母,单引号和括号)。我在下面的尝试是基于thisthisthis

代码1:我尝试了escapejssafe过滤器,但indexOf()为数组中的第一项返回2(应为0)。

#views.py
list = [#utf-8 encoded strings]
return render(request, template, {'list': list}) 

#template JS
 $('#id').ready(function() {
 var array = "{{list|escapejs}}";
 console.log(array.indexOf('{{obj}}'));
 #obj is item in list});

代码2:也尝试json.dumps()encode('utf8')json.loads(),但问题仍然存在。

#views.py
list = [#utf-8 encoded strings]
list = json.dumps(list, ensure_ascii=False).encode('utf8')
return render(request, template, {'list': list}) 

#template JS
 $('#id').ready(function() {
 var array = "{{list}}";
 console.log(array.indexOf('{{obj}}'));
 #obj is item in list});
javascript python arrays json django
1个回答
0
投票

正如Kenda在评论中提到的那样:

var array = "{{list}}";

将使array成为包含列表表示的字符串(Python列表本身或它的json表示)。你想要的是将你的列表转储到json(以确保你有一个Python列表的本机javascript表示),因为你已经尝试过并避免在JS片段中添加引号:

var array = {{list}};
© www.soinside.com 2019 - 2024. All rights reserved.