Django,JavaScript:当'null'传递到前端时,JS将其转换为&39;null&39;



我有一个将 2D 数组传递到我的前端的视图:

return render(request, self.template_name, {'runs': runs, 'graph_data': graph_data})

其中graph_data包含 [x, y] 坐标的数组,偶尔需要 [null, null] 的数组来标记我的折线图中的中断(使用 flot.js(

graph_data = [ [1, 7], [2, 9], [null, null], [5, 2], [6, 4] ]

在我的视图中构建此 2D 数组时,我插入如下中断:

other stuff happens
else:
graph_data_total += array
graph_data_total += ['break']

基本上,当我需要在图形中插入换行符时,我会插入图形数组,然后是带有字符串连接(+=(的字符串"break"。

然后,我需要将 datetime.datetime 对象转换为毫秒(每个数组中的 X 坐标(,所以我遍历每个点并这样做,除非它是"中断",在这种情况下我需要插入 [null, null],不带引号:

for point in z_scores_total:
if point != 'break':
time = point.time
graph_data.append([unix_time_millis(time), point.parameter_value])
else:
graph_data.append([json.dumps(None), json.dumps(None)])

JSON 文档指出,json.dumps(None)将插入null,不带引号,如下所示。

除了如果我打印(graph_data(我会看到['null','null'],它最终出现在我的前端,如标题[&39;空&39;, &39;空&39;]让整个事情崩溃。

理想情况下,我需要使用 json.dumps 插入 None ,以便它变成没有引号的,或者使 JS 不会出于某种原因将单引号转换为">&39;">

有谁知道为什么json.dumps(None(插入单引号,以及为什么这些单引号在到达我的前端时被解码为它们的ascii值

JSON 中没有None值,因此json.dumps使用字符串'null'

>>> import json
>>> json.dumps(None)
'null'

然后将生成的graph_data插入模板中,它可能会自动转义。&39;'的 HTML 转义值。你可能需要使用 Django 的mark_safe将刺痛标记为安全。

相关内容

  • 没有找到相关文章

最新更新