Как переделать функцию в 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)
Вернуться на верх