如何在Django中将csv文件发送到d3.js?

2024-10-01 07:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在使用的是Django+D3.js。 以及模板(视图csv.html)包含需要csv文件的js函数:

d3.text("{{ file }}", function(data) {
            var parsedCSV = d3.csv.parseRows(data);

            var container = d3.select("body")
                .append("table")

                .selectAll("tr")
                    .data(parsedCSV).enter()
                    .append("tr")

                .selectAll("td")
                    .data(function(d) { return d; }).enter()
                    .append("td")
                    .text(function(d) { return d; });
        });

如果不使用Django,函数应该是d3.text("train.csv", function(data) {...}

现在我在我的视图.py

^{pr2}$

顺便说一下视图csv.html以及火车.csv在Django项目下的同一个文件夹中。在

当我运行服务器并访问url时,我得到

AttributeError at /viewCSV/ 'str' object has no attribute 'META'

我只想让js读取csv文件。 我不知道如何实现它。
有谁能帮我解决这个问题吗?
提前谢谢。在


Tags: 文件csvdjango函数text视图datavar
2条回答

RequestContext的第一个参数是请求,而不是模板名称。在

不过,不需要这些冗长的东西:函数的最后四行可以替换为:

return render(request, 'viewCSV.html', {'file': data})

其中render是从django.shortcuts导入的。在

您希望在模板中插入文件名,而不是文件的内容。看起来像是将数据读入视图函数,然后将数据插入模板。只需插入文件名,让d3.text完成它(您也可以使用d3.csv,这是我将使用的)。在

即:

def viewCSV(request):
    variables = RequestContext(request, {'file': 'train.csv'})
    t = get_template('viewCSV.html')
    output = t.render(variables)
    return HttpResponse(output)

像“丹尼尔·罗斯曼”那样做事(顺便说一句,我就是这么做的)

^{pr2}$

相关问题 更多 >