Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在HTML级别将Python列表传递给Javascript_Javascript_Python_Django - Fatal编程技术网

如何在HTML级别将Python列表传递给Javascript

如何在HTML级别将Python列表传递给Javascript,javascript,python,django,Javascript,Python,Django,我试图传递Python列表以将其用作HTML文件中的Javascript数组,但当我在Javascript级别检查传递的Python列表时,控制台日志显示它是字符串 我正试图在Django环境中做到这一点 Django views.py def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['names'] = list( Store.o

我试图传递Python列表以将其用作HTML文件中的Javascript数组,但当我在Javascript级别检查传递的Python列表时,控制台日志显示它是字符串

我正试图在Django环境中做到这一点

Django views.py

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['names'] = list(
        Store.objects.values_list('businessName', flat=True))

    return context
index.html

<span data-names="{{ names }}">...</span>
<script>
    console.log(type($('span').attr('data-names')));
</script>
所有
数据-*
属性都保存为字符串。要获得正确的JSON类型对象,您需要使用
JSON.parse

<span data-names="{{ names }}">...</span>
<script>
    const data = JSON.parse($('span').attr('data-names'));
    console.log(data);
</script>

变量名称={names | safe}

safe
tag是一个选项。

如果python在这里输出一个JSON数组,那么将其包装在
JSON中。parse
可能会为您提供一个JS对象。在这一部分的底部是说所有的
data-*
属性都是字符串。我尝试了
JSON.parse
,但它在JSON.parse()的位置1抛出了JSON中的
Uncaught SyntaxError:Unexpected token',所以我尝试了
JSON.parse(JSON.stringify(…)
,但它仍然返回字符串。我将console.log结果放在原始帖子中。你能检查一下吗?我不知道django,但是关于从django返回JSON的问题。看起来Javascript不读取{{names | safe}}。
<span data-names="{{ names }}">...</span>
<script>
    const data = JSON.parse($('span').attr('data-names'));
    console.log(data);
</script>
from django.http import JsonResponse
return JsonResponse({'foo':'bar'})
<script>
    var names = {{ names|safe }}
</script>