загрузка csv или json с jquery в django всегда возвращает всю страницу html вместо содержимого файла - PullRequest
0 голосов
/ 27 мая 2020

У меня есть проект 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...