Javascript 将列表从视图上下文传递到模板,并将其指定为模板中的数组
我正在尝试从视图上下文传递一些列表:Javascript 将列表从视图上下文传递到模板,并将其指定为模板中的数组,javascript,python,django,Javascript,Python,Django,我正在尝试从视图上下文传递一些列表: def list_test(request): l = ['a', 'b', 'c'] context = {'l': l} return render(request, 'app/list_test.html', context) 将前端作为JS阵列: <script> let l = {{ l }} console.log(l) </script> 但随后变量被指定为一个大字符串,并带有
def list_test(request):
l = ['a', 'b', 'c']
context = {'l': l}
return render(request, 'app/list_test.html', context)
将前端作为JS阵列:
<script>
let l = {{ l }}
console.log(l)
</script>
但随后变量被指定为一个大字符串,并带有不需要的编码:
['a', 'b', 'c']
模板循环将工作:
{% for x in l %}
console.log("{{x}}")
{% endfor %}
但我不想重复。我想立即分配列表
有没有一个简单的方法可以做到这一点
我是否应该使用模板循环将字符串拆分为数组项?使用JSON:
def list_test(request):
l = ['a', 'b', 'c']
context = {'l': json.dumps(l)}
return render(request, 'app/list_test.html', context)
并在模板中将该值标记为安全值并对其进行分析:
let l = JSON.parse("{{ l|safe }}");
发生这种情况的原因是Django模板在默认情况下将转义字符。例如,将
&
替换为&代码>,以及带有“
的”
。您可以使用将内容标记为安全的
此外,使用JSON.dumps
将数据转换为JSON blob可能更好,因此:
import json
def list_test(request):
l = ['a', 'b', 'c']
context = {'l': json.dumps(l)}
return render(request, 'app/list_test.html', context)
导入json
def列表_测试(请求):
l=['a','b','c']
上下文={'l':json.dumps(l)}
返回渲染(请求'app/list_test.html',上下文)
并将其渲染为:
<script>
let l = {{ l|safe }};
console.log(l);
</script<
设l={l | safe}};
控制台日志(l);
<script>
let l = {{ l|safe }};
console.log(l);
</script<