Правильно получить запрос с помощью Javascript на Django

#javascript #django

#javascript #django

Вопрос:

Я разрабатываю веб-сайт, и одним из моих приоритетов является динамическая таблица поиска с автозаполнением и т.д.

Я обнаружил, что это возможно с помощью ajax и javascript.

Я уже реализовал триггер каждый раз, когда пользователь вводит данные в поле поиска.

Текущая проблема заключается в получении данных из базы данных, прямо сейчас я получаю ошибку 404, и данные не возвращаются.

Код:

views.py

 def search_bib(request):
    if request.method == "POST":
        search_str=json.loads(request.body).get('searchText')

        bib = Bibrest51.objects.all().filter(
            autor__starts_with=search_str) | Bibrest51.objects.all().filter(
            autor__icontains=search_str)

        data = Bibrest51.objects.all()
        
        return jsonResponse(list(data), safe=False)
  

JS:

 const searchField = document.querySelector("#searchField");

searchField.addEventListener("keyup", (e) => {
  const searchValue = e.target.value;

  if (searchValue.trim().length > 0) {
    console.log("searchValue", searchValue);

    fetch("bibliografia-search", {
      body: JSON.stringify({ searchText: searchValue }),
      method: "POST",
    })
      .then((res) => console.log(res))
      .then((data) => {
        console.log("data", data);
      })
      .catch((e) => {
        console.log(e);
      });
  }
});
  

Любая помощь была бы очень признательна, я новичок на сайте, и я надеюсь, что я не сделал ничего плохого с этим сообщением. Обратная связь для улучшения моего поста также приветствуется — спасибо!

Комментарии:

1. Если вы посмотрите, что такое ошибка 404, вы увидите, что это указывает на то, что ресурс на сервере не может быть найден.

2. Не могли бы вы показать маршруты URL-адресов django, чтобы убедиться, что routes не относится к 404

Ответ №1:

Во-первых, я заметил, что ваша функция возвращает данные, которые являются всеми объектами. Он должен возвращать bib, который является отфильтрованным результатом.

Во-вторых, это проблема с вашими маршрутами, поскольку функция должна работать должным образом