Django Как сделать условие правильным на HTML-странице - строка поиска

Я пытаюсь сделать поисковик если слово в моей БД которую я создал то выводит слово на HTML страницу а если нет то ничего.... Я сделал это правильно в VIEW, но я не могу применить это на HTML странице Я искал в интернете и не нашел ответа Я уверен, что я попадаю на что-то глупое.

Это вид

def Search_word(request):
search = request.POST.get("search")  #Grab the search item
return render(request,"search_page.html", {"search":search})

это html:

{%for i in Word.English_word%}

{%if search in Word.English_word%}

{{поиск}}

{%endif%} {%endfor%}

и урлы:

    path("Search_page",views.Search_word ,name="Search-page"),

Проблема в том, что даже если слово действительно, оно ничего мне не показывает...

Вы должны реализовать логику фильтрации в view, а не в шаблоне. Шаблоны предназначены для логики рендеринга, а не бизнес-логики. Более того, фильтровать следует с помощью базы данных, поскольку базы данных для этого и предназначены.

Таким образом, вид выглядит следующим образом:

def Search_word(request):
    search = request.POST.get('search')
    items = Word.objects.filter(English_word__contains=search)
    return render(
        request,
        'search_page.html',
        {'search': search, 'items': items}
    )

и затем в шаблоне мы отображаем это с:

{% for item in items %}
    {{ item.English_word }}: {{ item.Hebrew_word }} <br>
{% endfor %}

Вы можете использовать в качестве поиска __contains, чтобы проверить, есть ли в English_word подстрока, равная search, с помощью __icontains вы проверяете без учета регистра, с помощью __iexact вы ищете Word, которые соответствуют search без учета регистра, и, наконец, вы можете фильтровать с помощью Engish_word=search для точного соответствия.

Вернуться на верх