如何处理Django网络应用中的数据库实时搜索?

时间:2019-06-13 14:53:01

标签: javascript python django

我想构建一个Web应用程序,将用户带到带有搜索栏的网页上,并且每次按键时,搜索结果应显示在搜索栏下方。

到目前为止,我所做的是设置一些javascript代码以在每次按键时隐藏和显示HTML列表元素,但这并不能完全搜索数据库。我想我可以在HTML代码中列出整个数据库(大约500个对象并且正在增长),然后用Javascript对其进行过滤,但是我觉得这样效率低下吗?

我有一些可行的想法: 1)我上面刚刚描述的。以HTML列出整个数据库,并使用javascript进行过滤。 2)Algolia或Elasticsearch搜索框架?我尝试使用这两种方法,但似乎无法使它们正常工作。

您认为我应该怎么做?我是Web开发的新手,我不确定最好的方法是什么。谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

大多数(或许多人)这样做的方式是在前端使用自动完成功能(例如jQuery),并通过端点来查询数据库。

  $( "#search_input" ).autocomplete({source: "/search_view"});

然后/search_view将转到一个返回JSON的视图。 也许是这样的。

def search_view(request):
    term = request.GET.get('term')
    data = []
    if term:
        items = Item.objects.filter(value__icontains=term).values('value', 'id')
        data = json.dumps(items)  

    return HttpResponse(data, content_type='application/json')  

还有很多其他事情可以做,这只是一个简单的例子。