From 2722fbfcd7bd0568441e07059c3e8907130a8fa6 Mon Sep 17 00:00:00 2001 From: Calum Andrew Morrell Date: Sun, 16 Feb 2025 22:38:59 +0000 Subject: [PATCH] Added article, category and taglist views. --- articles/views.py | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/articles/views.py b/articles/views.py index 60f00ef..a988861 100644 --- a/articles/views.py +++ b/articles/views.py @@ -1 +1,42 @@ -# Create your views here. +from django.shortcuts import get_object_or_404 +from django.views.generic import DetailView, ListView + +from .models import Article, Category + + +class ArticleList(ListView): + category = None + tag = None + paginate_by = 9 + + def get_queryset(self): + category_slug = self.kwargs.get('category', None) + self.tag = self.kwargs.get('tag', None) + if category_slug: + self.category = get_object_or_404(Category, slug=category_slug) + return Article.objects.filter(category=self.category).filter(is_published=True) + elif self.tag: + return Article.objects.filter(tags=self.tag).filter(is_published=True) + else: + return Article.objects.filter(is_published=True) + + def get_context_data(self, *, object_list=None, **kwargs): + context = super(ArticleList, self).get_context_data(**kwargs) + context['category'] = self.category + context['tag'] = self.tag + return context + + +class ArticleDetail(DetailView): + model = Article + + +class CategoryList(ListView): + model = Category + + +class TagList(ListView): + template_name = 'articles/tag_list.html' + + def get_queryset(self): + return Article.tags.tag_model.objects.all()