blog category added

This commit is contained in:
Parsa Nazer
2026-05-03 18:41:51 +03:30
parent 4c48f9bed3
commit 556b58216b
8 changed files with 119 additions and 6 deletions
+23 -2
View File
@@ -1,14 +1,24 @@
from django.shortcuts import render
from rest_framework.views import APIView, Response
from rest_framework import status
from .models import BlogModel
from .serializers import AllBlogSerilizer, BlogSerilizer
from .models import BlogModel, BlogCategoryModel
from .serializers import AllBlogSerilizer, BlogSerilizer, AllBlogCategorySerilizer
from django.shortcuts import get_object_or_404
from utils.pagination import StructurePagination
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
from django.db.models import Q
class AllBlogCategoryView(APIView):
serializer_class = AllBlogCategorySerilizer
authentication_classes = []
def get(self, request):
categories = BlogCategoryModel.objects.all()
category_ser = self.serializer_class(instance=categories, many=True, context={'request': request})
return Response(category_ser.data, status=status.HTTP_200_OK)
class AllBlogView(APIView):
serializer_class = AllBlogSerilizer
pagination_class = StructurePagination
@@ -21,6 +31,12 @@ class AllBlogView(APIView):
required=False,
type=OpenApiTypes.STR,
),
OpenApiParameter(
name="category_id",
description="",
required=False,
type=OpenApiTypes.STR,
),
OpenApiParameter(
name="limit",
description="لیمیتش",
@@ -42,8 +58,13 @@ class AllBlogView(APIView):
def get(self, request):
blogs = BlogModel.objects.filter(is_published=True)
search_query = request.query_params.get('search', None)
category_id = request.query_params.get('category_id', None)
if search_query:
blogs = blogs.filter(Q(title__icontains=search_query) | Q(content__icontains=search_query))
if category_id:
category_obj = get_object_or_404(BlogCategoryModel, pk=category_id)
blogs.filter(category=category_obj)
paginator = self.pagination_class()
paginated_blogs = paginator.paginate_queryset(blogs, request)
blog_ser = self.serializer_class(instance=paginated_blogs, many=True, context={'request': request})