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
для точного соответствия.