# 블로그 글 조회, 검색
class BlogAPIView(APIView):
serializer_class = BlogSerializer
permission_classes = [AllowAny] # 로그인 불필요
# 조회
def get_queryset(self):
return Blog.objects.all().order_by('-created_at')
# 검색
def get(self, request):
# 데이터 베이스에서 조회
queryset = self.get_queryset()
# 검색 쿼리 파라미터
search_query = self.request.query_params.get('search', None) # 검색어 가져오기
filter_by = self.request.query_params.get('filter', 'title') # 기본값: 제목 검색
if search_query:
# icontains 대소문자 구분 없이
if filter_by == 'title':
queryset = queryset.filter(Q(title__icontains=search_query))
elif filter_by == 'content':
queryset = queryset.filter(Q(content__icontains=search_query))
# 직렬화
serializer = BlogSerializer(queryset, many=True)
return Response(serializer.data)
솔직히 검색은 한번도 안해봐서 팀원들이 만들어준 코드를 보고 해봤다