Как переделать функцию в class based views django
У меня есть функция. Мне надо её переделать в класс. Как можно это сделать используя ListView? Где прописывать всю логику? Или как можно улучшить данную функцию и переделать в класс? (Знаю, сделано всё плохо, но по другому я не придумал)
views.py
def index(request):
categories = [] # категории
# получаем все выбранные категории
for category in request.GET:
categories.append(category)
try:
products_cat = Product.objects.filter(
category__in=[Category.objects.get(slug=category) for category in categories])
except Exception:
return render(request, 'products/index.html')
# получаем все товары и категории
products = Product.objects.order_by('price', '-availability') # сортировка по цене
categories = Category.objects.all()
# если нет товаров по выбранной категории, то выводим все товары
if not products_cat:
products_cat = products
context = {
'products': products,
'categories': categories,
'product_cat': products_cat.order_by('price', '-availability'),
}
return render(request, 'products/index.html', context)