javascript - 将列表从 View 上下文传递到模板并将其分配为模板中的数组

标签 javascript python django

我正在尝试从 View 上下文传递一些列表:

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>

然而,这会记录

Uncaught SyntaxError: Unexpected token &

在控制台中。

我尝试将变量放在双引号中:

let l = "{{ l }}"

但是随后变量被分配为一个大字符串并使用不需要的编码:

[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]

模板循环将起作用:

 {% 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 }}");

关于javascript - 将列表从 View 上下文传递到模板并将其分配为模板中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57610671/

相关文章:

python - 如何将视频解码/编码为文本文件,然后再返回视频?

python - 为什么 Django 和 CherryPy 本身不支持基于 HTTP 动词的调度?

javascript - 如何正确使用nodejs和javascript在mysql中存储blob数据

javascript - 在选项卡上使用 AngularJS 模型

javascript - 最佳实践 - Javascript 中带有可选参数的函数

python - 值错误: Found unknown categories while calling cross_val_score

javascript - 替代用于 chrome 和 IE 8 的 explicitOriginalTarget.id

python -m timeit : SyntaxError: from __future__ imports must occur at the beginning of the file

javascript - 使用 django/javascript 保存 DnD 状态

python - Django中实现自动加锁解锁记录应该重写哪些方法