Сортировка товара
Сделав витрину товаров на странице shop.html, которая открывалась сразу после нажатия на раздел магазин, я решил сделать сортировку всех этих товаров по категориям. Подключив скачанный шаблон, там были реализованы переключатели на странице, их я переименовал в нужные для меня названия: все товары, верхняя одежда, джинсы, обувь и очки. И саму сортировку я решил реализовать на этих переключателях, то есть при нажатии на верхнюю одежду у меня показывалась только верхняя одежда и так далее. Чтобы это реализовать, мы переходим в файл shop.html и прописываем метод {% for post in pr %} поверх всех наших категорий, который необходим для вывода всех вообще товаров. После этого, делаем сортировку по Availability с помощью команды {% if post.availability %}. Эта команда говорит нам о том, что если галочка стоит, то есть товар есть в наличии, то выводим этот товар, если нет, то нет. Далее, делаем проверку по указанной категории с помощью команды {% if post.group == "Outerwear" %}. Этот метод if говорит о том, что если товар соответствует категории верхней одежды, то он выводит этот товар. Но всего в работе у нас четыре категории товара, поэтому после блока верхней одежды у нас идет блок обуви. Чтобы была сортировка по обуви, перед блоком мы уже пишем команду {% elif post.group == "Shoes" %}. После обуви у нас идет джинсы, поэтому прописываем {% elif post.group == "Jeans" %} и самый последний блок - очки. Перед этим блоком мы просто указываем команду {% else %}, потому что он является последним. После чего мы прописываем команды: {% endif %} (завершает проверку по блоку), {% endif %} (завершает проверку по наличию товара) и {% endfor %} (завершает цикл for). В результате выполнения этих действий, мы получаем сортировку товара. Результат представлен внизу.
Создание страницы товара
Сделав вывод всех товаров на страницу, следующим этапом стало созданием страницы товаров, то есть, при нажатии на какой-нибудь товар, у нас открывается отдельная его страница, где будет его название, изображение, описание и цена. Для этого в файле urls.py я прописал следующую команду: path('shop/', views.product, name='product'). Она говорит о том, что ее название product и что она будет открывать товар со страницы shop в соответствии с его id. То есть, у меня в магазине у каждого товара есть номер и все информация будет выводиться в соответствии с этим номером. После этого, в файле views.py я прописал сам метод, который назывался product. Его код изображен внизу.
def product (request, id): product = Product.objects.get(pk=id) context = { 'product': product } session_key = request.session.session_key if not session_key: request.session["session_key"]=123 request.session.cycle_key() print(request.session.session_key) return render (request,'web/product.html', context)
Ну и последним этапом является создание самой html страницы (в моем случае - product.html). На этой странице сделана обычная верстка и вывод соответствующих полей из нашей БД. Кроме того, была создана кнопка "купить" и поле, для ввода количества товара, сколько мы хотим купить. Это пригодиться нам для реализации корзины и добавления товара в нее. Сам код и результат представлены внизу.
Код product.html
Результат