Получение локальных файлов JSON с интернационализацией в django
Я делаю сайт на django и включил интернационализацию. Интернационализация прекрасно работает на других страницах, за исключением случая, когда я пытаюсь получить json-файл.
Поиск принимает слово, затем находит соответствующий JSON-файл в файле javascript (ниже). Поиск работал без проблем, пока я не добавил интернационализацию. Теперь я вижу, что когда jquery пытается получить файл, он включает i18n аббревиатуру спереди, что приводит к ошибке 500. Я пробовал разбирать расположение файла, но аббревиатуры всегда добавляются в getJSON. Как мне решить эту проблему?
Конкретно в консоли отображается следующая ошибка:
ПОЛУЧИТЬ http://localhost:8000/en/static/assets/chowords/amo.json 500 (Внутренняя ошибка сервера)
Логично, что это ошибка, поскольку json-файл находится по адресу http://localhost:8000/static/assets/chowords/amo.json. Я пробовал хранить файлы в директории "en" со статическими вложенными внутри, но это не решило проблему.
Код для справки:
- Файл Javascript
new URLSearchParams(window.location.search).forEach((value,name)=>{
console.log(name)
console.log(value)
var fileword = value;
var url = "./static/assets/chowords/" + fileword + ".json";
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, false);
xhr.send();
console.log(xhr)
document.getElementById("wordsearched").innerHTML =`<h1>${fileword} </h1>`
if (xhr.status == "404") {
//console.log("File doesn't exists");
let div = document.createElement('p')
div.innerHTML =`<h3>No results found</h3>`
document.getElementById("word").appendChild(div)
} else {
console.log("here");
$.getJSON("static/assets/chowords/" + fileword + ".json", function(data){
var senses = data['sense'];
console.log(senses.length)
var audios = data['audio']
var variant = data['variant']
for (var i = 0; i <senses.length; i++){
let wording = senses[i];
wordtemplate(wording, audios, variant)
}
});
}
})
- settings.py показывает коды для интернационализации
Большое спасибо за любую помощь в этом вопросе!
Это относительный путь
$.getJSON("static/assets/chowords/"...
Измените его на
$.getJSON("/static/assets/chowords/"...
поэтому она становится абсолютной.
Также, чтобы просмотреть сообщение об ошибке, вы можете перейти на вкладку "Сеть" в инструментах разработчика, выбрать запрос, в котором произошла ошибка, затем перейти на вкладку предварительного просмотра.