CS50 Project 1 搜索栏 问题:如何使搜索栏过滤条目以查找可能的条目并将其显示在列表中?

时间:2021-08-01 18:19:04

标签: python django django-views cs50 searchbar

我正在研究 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 %}

如果只搜索确切的标题,用户会收到一个空白页面。我该如何解决这个问题?

1 个答案:

答案 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 关键字搜索条目。