You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django视图的HTML JavaScript中访问列表类型上下文变量

嘿,我来帮你搞定这个问题!从Django视图把列表传到HTML的JavaScript里其实有几种靠谱的方法,我给你详细拆解下:

方法1:使用Django内置的json_script模板标签(首推)

这是最安全、最省心的方式,Django会帮你自动处理转义和XSS防护的问题,步骤超简单:

  1. 在HTML模板的合适位置(比如</body>标签前),用json_script过滤器输出你的列表:
{{ unclean|json_script:"unclean-data" }}
  1. 接着在<script>标签里获取并解析这个数据:
// 通过id找到对应的script元素,解析它的内容
const uncleanList = JSON.parse(document.getElementById('unclean-data').textContent);
// 现在就能正常使用这个列表啦,比如打印验证下
console.log('拿到的列表:', uncleanList);

这个标签会生成一个type="application/json"的隐藏script标签,完全不会影响页面渲染,还能避免各种语法错误和安全问题。

方法2:手动转成JSON字符串传递

如果不想用模板标签,也可以在视图层先把列表转成JSON格式,再传到模板:

  1. 先在views.py里导入json模块,然后处理上下文:
import json

# 假设你已经有了unclean这个列表
context = {
    'unclean': unclean,
    'unclean_json': json.dumps(unclean)
}
  1. 然后在HTML的<script>里使用,记得加上escapejs过滤器转义特殊字符:
const uncleanList = JSON.parse('{{ unclean_json|escapejs }}');
console.log(uncleanList);

⚠️ 注意:这个方法一定要加escapejs,不然如果列表里包含引号、换行符这类字符,会直接导致JS语法报错,而且安全风险也比第一种高。

避坑提醒

千万别直接写const uncleanList = {{ unclean }};!虽然Python的列表格式看起来和JS数组很像,但Django输出的是Python风格的字符串,一旦列表里有带引号的字符串,直接用会触发JS语法错误,还可能引入XSS漏洞。

内容的提问来源于stack exchange,提问作者Ang Yang Cheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:07:20