У меня есть проект Django на Win 10. Я пытаюсь загрузить локальный json или csv-файл с пользовательским jQuery. Я обнаружил, что всякий раз, когда я пытаюсь загрузить содержимое файла json или csv, расположенного где-то в моем каталоге / static /, он всегда возвращает всю страницу html вместо содержимого файла. Неважно, json или csv. К настоящему времени я знаю, что в случае ошибки html вернется, но я не знаю, как я могу решить эту проблему на данном этапе.
function test () {
fetch("admin/js/custom/codetable.json")
.then(res => res.json())
.then((out) => {
console.log('Output: ', out);
}).catch(err => console.error(err));
}
вернет
Unexpected token < in JSON at position 0
Это не ошибка формата данных, как я ранее подозревал. Я знаю, что путь разрешается, потому что, если я намеренно исключаю путь, возникнет дополнительная ошибка 404.
Если я попробую это:
function test2() {
fetch("admin/js/custom/codetable.csv")
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.blob();
})
.then(myBlob => {
myImage.src = URL.createObjectURL(myBlob);
})
.catch(error => {
console.error('There has been a problem with your fetch operation:', error);
});
}
, ответ будет:
There has been a problem with your fetch operation: ReferenceError: myImage is not defined
Этот блок кода предназначен для проверки загружаемости ресурса, поэтому я точно знаю, что есть какая-то проблема с загрузкой.
Если я попытаюсь загрузить файл локально:
function test3() {
$.get("C:\\Users\\x\\PycharmProjects\\x2\\x2\\static\\admin\\js\\custom\\codetable.csv", function(data) {
// Split the lines
var lines = data.split('\n');
var i = 0;
for (i = 0; i < lines.length; i++) {
alert(lines[i]);
}
})
}
он просто скажет:
Not allowed to load local resource:
, если вместо этого я использую URL-адрес, который, как я знаю, разрешается, я получу всю страницу html в окнах сообщений.
если я использую PapaParse:
Papa.parse("admin/js/custom/codetable.csv", {
download: true,
complete: function(results) {
console.log("Finished:", results.data);
}
});
, я верну всю страницу html в массивах на консоль
Что здесь происходит? Почему я не могу успешно загрузить этот локальный json или CSV-файл в Django, используя jquery? Мне не хватает конфигурации где-то в Django? Это какое-то разрешение или проблема безопасности? Как я могу решить эту проблему, чтобы загрузить файл json или csv из каталога stati c?