Как преобразовать представление на основе функций в представление на основе классов?

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

    def get_context_data(self, *args, **kwargs):
        cat_menu = Category.objects.all()
        context = super(CategoryView, self).get_context_data(*args, **kwargs)
        context["cat_menu"] = cat_menu
        return context

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

def CategoryView(request, cats):
    category_posts = Post.objects.filter(category=cats)
    return render(request, 'blog/categories.html', {'cats':cats, ' 
    category_posts':category_posts})

    def get_context_data(self, *args, **kwargs):
        cat_menu = Category.objects.all()
        context = super(CategoryView, self).get_context_data(*args, **kwargs)
        context["cat_menu"] = cat_menu
        return context

мне нужно конвертировать

def CategoryView(request, cats):
    category_posts = Post.objects.filter(category=cats)
    return render(request, 'blog/categories.html', {'cats':cats, ' 
    category_posts':category_posts})

к представлению, основанному на классе.

сначала я попробовал сделать так:

class CategoryView(ListView):
template_name = 'blog/categories.html'
model = Post
context_object_name = "category_posts"

def get_queryset(self):
    return super().get_queryset().filter(category=self.kwargs.get('cats'))


def get_context_data(self, *args, **kwargs):
    cat_menu = Category.objects.all()
    context = super(CategoryView, self).get_context_data(*args, **kwargs)
    context["cat_menu"] = cat_menu
    return context

но когда я вывел шаблон, я потерял {{cats}} - categories. Любая помощь будет признательна

Вернуться на верх