Added views & paths for news items, categories and tags.
parent
f3c6b66e7d
commit
284bddd0d8
|
|
@ -0,0 +1,14 @@
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from .views import CategoryList, NewsItemDetail, NewsItemList, TagList
|
||||||
|
|
||||||
|
app_name = "news"
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path("", NewsItemList.as_view(), name="list"),
|
||||||
|
path("categories/", CategoryList.as_view(), name="categories"),
|
||||||
|
path("categories/<slug:category>/", NewsItemList.as_view(), name="list_category"),
|
||||||
|
path("tags/", TagList.as_view(), name="tags"),
|
||||||
|
path("tags/<slug:tag>/", NewsItemList.as_view(), name="list_tag"),
|
||||||
|
path("<slug:category>/<slug:slug>/", NewsItemDetail.as_view(), name="detail"),
|
||||||
|
]
|
||||||
|
|
@ -1,3 +1,44 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import get_object_or_404
|
||||||
|
from django.views.generic import DetailView, ListView
|
||||||
|
|
||||||
# Create your views here.
|
from .models import Category, NewsItem
|
||||||
|
|
||||||
|
|
||||||
|
class CategoryList(ListView):
|
||||||
|
model = Category
|
||||||
|
|
||||||
|
|
||||||
|
class NewsItemDetail(DetailView):
|
||||||
|
model = NewsItem
|
||||||
|
|
||||||
|
|
||||||
|
class NewsItemList(ListView):
|
||||||
|
category = None
|
||||||
|
tag = None
|
||||||
|
paginate_by = 6
|
||||||
|
|
||||||
|
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 NewsItem.objects.filter(category=self.category).filter(
|
||||||
|
is_published=True
|
||||||
|
)
|
||||||
|
elif self.tag:
|
||||||
|
return NewsItem.objects.filter(tags=self.tag).filter(is_published=True)
|
||||||
|
else:
|
||||||
|
return NewsItem.objects.filter(is_published=True)
|
||||||
|
|
||||||
|
def get_context_data(self, *, object_list=None, **kwargs):
|
||||||
|
context = super(NewsItemList, self).get_context_data(**kwargs)
|
||||||
|
context["category"] = self.category
|
||||||
|
context["tag"] = self.tag
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
class TagList(ListView):
|
||||||
|
template_name = "news/tag_list.html"
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return NewsItem.tags.tag_model.objects.all()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue