Я пытаюсь загрузить файл csv внутри django в javascript, но выдает ошибку: http://127.0.0.1:8000/data.csv не найден, местоположение data.csv находится внутри папки шаблонов с html-страницей.
Мой код:
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;
}
как это решить?
понять, как работает Django и HTTP
Не забудьте прочитать официальную документацию Django docs.djangoproject.com/en/3.1/howto/статические файлы.





Сначала вам нужно посмотреть, как работает сервер Django, и обслуживать статический файл в Django ссылка на сайт..
Вы не можете просто загрузить статический файл как d3.csv("data.csv")
Затем выполните следующие действия
1. Добавить подписку в settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
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.info(csv)
});
</script>
</body>
</html>
Если ваш файл не является статическим, а мультимедийный файл загружен пользователем, просто замените код d3.csv, как показано ниже. А перед этим вам нужно добавить MEDIA_URL и MEDIA_ROOT в настройках, как показано ниже
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
<script>
d3.csv('{{ object.file.url}}', function (err, csv) {
console.info(csv)
});
</script>
в запросе НЕТ каталога для
http://127.0.0.1:8000/data.csv, поэтому он не ищет в папке шаблонов