Почему, когда я пытаюсь найти продукт, ничего не появляется?

Я создал сайт электронной коммерции с использованием Django, но результаты поиска не появляются, когда я пытаюсь найти продукт. Например, когда я пытаюсь найти часть названия товара, например, спрей для горла, ничего не появляется, хотя в базе данных есть спрей для горла.

Я пробовал использовать методы Post и Get, хотя разницы между ними нет. Я проверил, работает ли url для страницы show_product, и он работает. Я ожидаю результатов поиска для того, что я искал. Хотя страница поиска работает, ничего не появляется в качестве результатов поиска. Вместо этого я получаю /search/?searched=throat-spray

Мой views.py:

def search(request):
    if 'searched' in request.GET:
        searched = request.GET['searched']
        products = Product.objects.filter(title__icontains=searched)
        return render(request, 'epharmacyweb/search.html', {'searched': searched, 'product': products})

Мой поиск.html:

<center>
        {% if searched %}
            <h1>Search Results for {{ searched }}</h1>
            <br>
                {% for product in products %}
                    <a href="{% url 'epharmacyweb/show-product' product.title %}">{{ product }}</a>
                {% endfor %}
            </br>
        {% else %}
            <h1>You haven't searched anything yet...</h1>
        {% endif %}

    </center>

Мой urls.py:

path('search/', views.search, name='search'),
    path('search-error/', views.search_error, name='search_error'),
    path('show-product/', views.show_product, name='show-product'),

Мой show_product.html:

<div class="col">
    <div class="card shadow-sm">
      <img class="img-fluid" alt="Responsive image" src="{{ product.image.url }}">
      <div class="card-body">
        <p class="card-text">
          <a class="text-dark text-decoration-none" href="{{ product.get_absolute_url }}">{{ product.title }}</a>
        </p>
        <div class="d-flex justify-content-between align-items-center">
          <small class="text-muted"></small>
        </div>
      </div>
    </div>
  </div>

Вы передаете переменную с именем product в шаблон...

return render(request, 'epharmacyweb/search.html', {'searched': searched, 'product': products})

... но затем шаблон пытается получить доступ к переменной с именем products.

{% for product in products %}

У вас несовпадение имен переменных. Измените 'product': products на 'products': products в представлении.

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