开发者社区> 问答> 正文

Django前端搜索

目前使用Django 2.1,PostgreSQL 11,并在Heroku上托管数据库。

我想在我设置的设备视图上实现用户搜索。

当前页面布局 此页面将列出数据库中的人员,并提供有关它们的详细信息的链接。我希望用户能够搜索特定的人并相应地填充列表。

Django文档提供了实现此目的的一些步骤,但对于行动计划并不完全清楚。

展开
收起
一码平川MACHEL 2019-01-23 16:47:08 3651 0
2 条回答
写回答
取消 提交回答
  • 为用户显示标题中含有被搜索关键词的全部文章。整个搜索的过程如下:
    1、用户在搜素框中输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入的结果到服务器
    2、服务器接收到用户输入的搜索关键词 “django” 后去数据库查找文章标题中含有该关键词的全部文章
    3、服务器将查询结果返回给用户

    2019-07-17 23:26:44
    赞同 展开评论 打赏
  • 可以使用此示例在视图中实现自己的搜索引擎

    def search(request):

    keywords=''
    
    if request.method=='POST': # form was submitted
    
        keywords = request.POST.get("keywords", "") # <input type="text" name="keywords">
        all_queries = None
        search_fields = ('title','content','resume') # change accordingly
        for keyword in keywords.split(' '): # keywords are splitted into words (eg: john science library)
            keyword_query = None
            for field in search_fields:
                each_query = Q(**{field + '__icontains': keyword})
                if not keyword_query:
                    keyword_query = each_query
                else:
                    keyword_query = keyword_query | each_query
                    if not all_queries:
                        all_queries = keyword_query
                    else:
                        all_queries = all_queries & keyword_query
    
        articles = Article.objects.filter(all_queries).distinct()
        context = {'articles':articles}
        return render(request, 'search.html', context)
    
    else: # no data submitted
    
        context = {}
        return render(request, 'index.html', context) 

    您只需要更改以下内容:

    1 - html中使用的name属性


    keywords = request.POST.get("keywords", "")
    2 - 模型类的名称

    3 - 该模型的搜索字段

    2019-07-17 23:26:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载