Не могу разобраться с логикой цикла for
Я пытаюсь написать код, в котором пользователь вводит запрос на поиск в вики. Если запрос находится в заданном списке записей, пользователь должен быть перенаправлен на страницу соответствующей записи. Если запрос не соответствует названию записи, но является подстрокой какой-либо записи, пользователь должен быть перенаправлен на страницу со списком связанных записей. Моя проблема в том, что я не смог понять, как логически реализовать операторы возврата.
Код ниже работает нормально:
def search(request):
sub_list = []
entries = util.list_entries()
search = request.GET.get("q")
for entry in entries:
if search.lower() == entry.lower():
return redirect("entry", title= search)
elif search.lower() in entry.lower():
sub_list.append(entry)
return render(request, "encyclopedia/search.html",{
"title":search,
"sub_list":sub_list
})
Но когда я пытаюсь добавить еще одно условие для случая, когда запрос не соответствует названию записи, либо он всегда возвращает "Not Found":
for entry in entries:
if search.lower() == entry.lower():
return redirect("entry", title= search)
else:
if search.lower() in entry.lower():
sub_list.append(entry)
return render(request, "encyclopedia/search.html",{
"title":search,
"sub_list":sub_list
})
return HttpResponse("Not Found")
или возвращает только первое совпадение подстроки:
for entry in entries:
if search.lower() == entry.lower():
return redirect("entry", title= search)
else:
if search.lower() in entry.lower():
sub_list.append(entry)
return render(request, "encyclopedia/search.html",{
"title":search,
"sub_list":sub_list
})
return HttpResponse("Not Found")