Как преобразовать представление на основе функций в представление на основе классов?
Я недавно создал систему категорий, но проблема в том, что когда я перехожу на другую страницу, не главную, все категории исчезают, потому что я не ссылался на них. Я обнаружил, что, добавив
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
.
Любая помощь будет признательна