Skip to main content
 首页 » 编程设计

javascript之在 Django 中使用 Pandas 转换为 JSON

2025年05月04日55java哥

我有以下在 django View 中创建的 pandas 数据框:

Date        Actual ticks 
26-Sep-14   20 
29-Sep-14   40 
15-Oct-14   -10 
20-Oct-14   5 

使用pandas从csv文件中读取数据,然后转换为json对象,然后发送到django模板:

df = pd.read_csv('article/DailyStats.csv', usecols=['Date', 'Actual ticks']) 
df.to_json() 
return render_to_response('article/test.html', {'df': df}) 

现在是我遇到问题的地方,当我尝试在模板中使用 JSON 对象时:

<script type="text/javascript"> 
    $.getJSON({{ df }}, function(data){ 
        //do something 
    }) 
 </script> 

在我的 Chrome 浏览器控制台中,我收到错误:Uncaught SyntaxError: Unexpected Identifier

如果我在浏览器中查看 Sources,我会看到以下内容:

    <script type="text/javascript"> 
        $.getJSON(           Actual ticks 
        Date                    
        26-Sep-14            20 
        29-Sep-14            40 
        15-Oct-14            -10 
        20-Oct-14            5, function(data){ 
        }) 
    </script> 

我想要的只是一个包含键列表(即:日期)和值(即:“实际报价”)的 JSON。我猜这与列标题搞砸了有关。

最终我希望能够遍历 json 以显示日期和相应的值,但在不再发生此错误之前我不能这样做。

非常感谢您的任何建议。

更新:感谢@Anzel 指出我没有将 JSON 对象分配给变量。我现在已经做到了,即: df_json = df.to_json()

但生成的 json 无效:

[ 
    [ 
        &quot;26-Sep-14&quot;, 
        20 
    ], 
    [ 
        &quot;29-Sep-14&quot;, 
        40 
    ], 
    [ 
        &quot;15-Oct-14&quot;, 
        -10 
    ], 
    [ 
        &quot;20-Oct-14&quot;, 
        5 
    ] 
] 

知道如何让它创建有效的 JSON 吗?

请您参考如下方法:

至于你的第二个问题,Django 正在转义字符串,以便在 HTML 中安全使用它(不能包含额外的 HTML 或 JavaScript)。

要告诉 Django 不要这样做,请使用 safe 模板过滤器。

此外,由于这需要成为 JavaScript 中的字符串文字,因此您需要在其周围加上引号:

var json_data = JSON.parse("{{ df_json|safe }}");