首页 > 解决方案 > 在 Django 上使用 Javascript 正确获取查询

问题描述

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

我发现这可能使用ajax和 javascript。

每次用户在搜索字段中键入时,我已经实现了一个触发器。

当前的问题是从数据库中获取数据,现在我收到 404 错误,并且没有返回数据。

代码:

视图.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);
      });
  }
});

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

标签: javascriptdjango

解决方案


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

其次,您的路线有问题,因为该功能应该按预期工作


推荐阅读