Почему, когда я пытаюсь найти продукт, ничего не появляется?
Я создал сайт электронной коммерции с использованием 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
в представлении.