Фильтрация по тегу <a> - PullRequest
       1

Фильтрация по тегу <a>

1 голос
/ 12 февраля 2020

У меня есть несколько фотографий с тегами на моей странице, и я хотел бы, чтобы они использовались для фильтрации по категории. Таким образом, после нажатия на одно из изображений будет отфильтрован результат по категории.

Так что это будет фильтр, который я хотел бы подключить к одному из изображений:

item_list = item_list.filter(category__pk=1)

html

<div class="col-md-4 overlay zoom">
            <a href="/">
                <div style="position:relative;">
                    <img src="{% static '/img/category_choice/bike1.png' %}" class="img-fluid">
                    <div class="card-img-overlay">
                        <h2 class="card-title"
                            style="text-align: center; color: aliceblue; position: absolute; bottom:5px;">
                            Gravel Bikes
                        </h2>
                    </div>
                </div>
            </a>
        </div>

плюс список в конце html файл

<ul>
        {% for item in items %}
        <li>
            {{ item.title }}
        </li>
        {% endfor %}
    </ul>

views.py

def BikeView(request):
  query = request.GET.get('q')
  if query:
      item_list = Item.objects.all()
      item_list = Item.objects.filter(title__icontains=query)
      context = {
          'items': item_list
      }
      return render(request, "bikes.html", context)
  return render(request, "bikes.html", {})

url

urlpatterns = [

path('checkout/', CheckoutView.as_view(), name='checkout'),
path('order-summary/', OrderSummaryView.as_view(), name='order-summary'),
path('product/<slug>/', ItemDetailView.as_view(), name='product'),
path('add-to-cart/<slug>/', add_to_cart, name='add-to-cart'),
path('add-coupon/', AddCouponView.as_view(), name='add-coupon'),
path('remove-from-cart/<slug>/', remove_from_cart, name='remove-from-cart'),
path('remove-item-from-cart/<slug>/', remove_single_item_from_cart,
     name='remove-single-item-from-cart'),
path('payment/<payment_option>/', PaymentView.as_view(), name='payment'),
path('request-refund/', RequestRefundView.as_view(), name='request-refund'),
path('bikes/', BikeView, name='bikes'),
path('', HomeView, name='home'),
path('search/', SearchView, name='search'),
path('bike-category/<category_id>', category_view, name='category')
]

просмотров

def category_view(request, category_id):
  item_list = Item.objects.filter(category__pk=category_id)
  return render(request, "bikes.html", {'item_list': item_list})

1 Ответ

1 голос
/ 12 февраля 2020

Давайте разберемся. Вот что мы собираемся сделать (стараясь не так сильно изменять то, что у вас есть):

1.- Определите маршрут для обработки запросов, когда пользователи нажимают на изображение велосипеда. Для этого нам нужно определить новый путь в файле urls.py вашего приложения:

urlpatterns = [
    # ... the rest of your URLconf goes here ... ,
    path('bike-category/<category_id>', views.category_view, name='category'),
]

2.- Теперь давайте немного изменим ваши представления .py файл и создайте новое представление для отображения категорий, поскольку для того, что я вижу, в настоящее время у вас есть только представление для фильтрации велосипедов в соответствии с параметром запроса (который должен быть отправлен в другое место в вашем коде):

def category_view(request, category_id):  
    item_list = Item.objects.filter(category__pk=category_id)
    return render(request, "bikes.html", {'item_list': item_list})
Соедините атрибут href тега <a> с только что определенным нами маршрутом:
<a href="{% url 'category' category_id=1 %}">

Обратите внимание, что я ответил только на основании вашего текущего кода, поэтому я могу ' не знаю, есть ли у вас установленный c набор категорий или они генерируются динамически в шаблоне, исходя из базы данных, et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...