目前使用Django 2.1,PostgreSQL 11,并在Heroku上托管数据库。
我想在我设置的设备视图上实现用户搜索。
当前页面布局 此页面将列出数据库中的人员,并提供有关它们的详细信息的链接。我希望用户能够搜索特定的人并相应地填充列表。
Django文档提供了实现此目的的一些步骤,但对于行动计划并不完全清楚。
为用户显示标题中含有被搜索关键词的全部文章。整个搜索的过程如下:
1、用户在搜素框中输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入的结果到服务器
2、服务器接收到用户输入的搜索关键词 “django” 后去数据库查找文章标题中含有该关键词的全部文章
3、服务器将查询结果返回给用户
可以使用此示例在视图中实现自己的搜索引擎
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 - 该模型的搜索字段
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。