我正在研究 CS50 项目 1,以制作一个搜索栏,使用 Django 搜索可能的类似维基百科的条目。如果您输入标题的确切名称,您将被重定向到该条目页面。如果未搜索条目的确切名称,如何使用查询显示可能条目的列表?
views.search
def search(request):
entry_list = util.list_entries()
query = request.GET.get("q", "")
if query in entry_list:
return redirect(get_entry, query)
else:
results = []
for entry in entry_list:
if query in entry:
results.append(entry)
return render(request, "encyclopedia/index.html", {
"entry": results
})
index.html
{% extends "encyclopedia/layout.html" %}
{% block title %}
Encyclopedia
{% endblock %}
{% block body %}
<h1>All Pages</h1>
<ul>
{% for entry in entries %}
<a href = "wiki/{{ entry }}"><li>{{ entry }}</li></a>
{% endfor %}
</ul>
{% endblock %}
如果只搜索确切的标题,用户会收到一个空白页面。我该如何解决这个问题?
答案 0 :(得分:0)
我想通了。对于在项目 1 的这一部分中苦苦挣扎的其他人:
views.search
`
定义搜索(请求):
entry_list = util.list_entries()
query = request.GET.get("q", "")
if query in entry_list:
return redirect(get_entry, query)
else:
results = [entry for entry in entry_list if query.lower() in entry.lower()]
return render(request, "encyclopedia/index.html", {
"entries": results
})
`
您必须创建一个列表来存储可能的结果并使用 for 循环和 in 关键字搜索条目。