目标:我想将Django中的字符串列表传递给模板JS作为字符串数组并获取数组中每个字符串的索引。
问题:Javascript indexOf()
正在计算每个字符(例如字母,单引号和括号)。我在下面的尝试是基于this,this和this。
代码1:我尝试了escapejs
和safe
过滤器,但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});
正如Kenda在评论中提到的那样:
var array = "{{list}}";
将使array
成为包含列表表示的字符串(Python列表本身或它的json表示)。你想要的是将你的列表转储到json(以确保你有一个Python列表的本机javascript表示),因为你已经尝试过并避免在JS片段中添加引号:
var array = {{list}};