在Django上使用Javascript正确获取查询

在Django上使用Javascript正确获取查询,javascript,django,Javascript,Django,我正在开发一个网站,我的优先事项之一是一个动态搜索表与自动完成等 我发现使用ajax和javascript可以实现这一点 我已经在每次用户在搜索字段中键入时实现了一个触发器 当前的问题是从数据库获取数据,现在我得到一个404错误,没有返回任何数据 代码: views.py def search_bib(request): if request.method == "POST": search_str=json.loads(request.body).g

我正在开发一个网站,我的优先事项之一是一个动态搜索表与自动完成等

我发现使用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:


任何帮助都将不胜感激,我是这个网站的新手,我希望我没有做错这篇文章。对改进我的帖子的反馈也很感谢-谢谢

首先,我注意到您的函数返回的数据是所有对象。它应该返回bib,这是过滤结果


其次,您的路由有问题,因为函数应该按预期工作。

首先,我注意到您的函数返回的数据是所有对象。它应该返回bib,这是过滤结果


其次,您的路由有问题,因为该函数应该按预期工作

如果您查找404错误是什么,您会看到它表明无法找到服务器上的资源。您是否可以显示django的URL路由以确保路由不是404的情况如果您查找404错误是什么,您会看到,这表明无法找到服务器上的资源。您能否显示django的URL路由以确保路由不是404的情况
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);
      });
  }
});