blog category added
This commit is contained in:
+23
-2
@@ -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})
|
||||
|
||||
Reference in New Issue
Block a user