我试图在 javascript 中加载 django 内的 csv 文件,但它给了我一个错误:http://127.0.0.1:8000/data.csv is not find , data.csv 位置位于包含 html 页面的 templates 文件夹内。
我的代码:
d3.csv("data.csv", function(d, i, columns) {
for (var i = 1, n = columns.length; i < n; ++i)
d[columns[i]] = +d[columns[i]];
return d;
}, function(error, data) {
if (error) throw error;
}
Run Code Online (Sandbox Code Playgroud)
首先,您需要了解 Django 服务器如何工作并在 Django link中提供静态文件。
您不能仅将静态文件加载为 d3.csv("data.csv")
然后按照以下步骤操作
1.在settings.py中添加以下内容
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
Run Code Online (Sandbox Code Playgroud)
2.在根项目文件夹中创建静态文件夹并在静态文件夹中添加csv文件
3.您需要提供静态文件并加载
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<h1>hello d3</h1>
<div>
</div>
<script>
d3.csv('{% static 'data.csv' %}', function (err, csv) {
console.log(csv)
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果您的文件不是静态的并且用户上传的媒体文件,只需替换 d3.csv 代码,如下所示。在此之前,您需要在设置中添加 MEDIA_URL 和 MEDIA_ROOT,如下所示
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
<script>
d3.csv('{{ object.file.url}}', function (err, csv) {
console.log(csv)
});
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |