[python] Django REST framework에서의 검색 기능 추가 방법

Django REST framework은 강력한 검색 기능을 제공하여 API에서 필요한 데이터를 쉽게 찾을 수 있습니다. 이 기능을 사용하면 API 엔드포인트에 대한 검색 쿼리를 작성하여 원하는 결과를 가져올 수 있습니다.

이 포스트에서는 Django REST framework에서 검색 기능을 추가하는 방법을 다루겠습니다.

1. 검색 백엔드 설정

검색 기능을 추가하려면 우선 검색 백엔드를 설정해야 합니다. Django REST framework에서는 여러 가지 검색 백엔드를 지원합니다.

가장 일반적인 검색 백엔드는 SearchFilter입니다. 이 백엔드는 여러 필드를 사용하여 텍스트 검색을 수행할 수 있습니다.

# settings.py

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend', 'rest_framework.filters.SearchFilter'],
    'SEARCH_PARAM': 'search',
}

위의 설정에서는 SearchFilterDEFAULT_FILTER_BACKENDS에 추가하고 SEARCH_PARAM을 원하는 URL 쿼리 매개변수로 설정하고 있습니다.

2. 검색 기능 적용

검색 기능을 적용하려면 views.py 파일에서 SearchFilter를 사용하는 것으로 충분합니다.

# views.py

from rest_framework import filters, viewsets

class YourModelViewSet(viewsets.ModelViewSet):
    queryset = YourModel.objects.all()
    serializer_class = YourModelSerializer
    filter_backends = [filters.SearchFilter]
    search_fields = ['field1', 'field2', ...]

위의 예제에서는 YourModelViewSet에서 SearchFilter를 사용하고 있으며, search_fields에 텍스트 검색을 수행할 모델 필드를 지정하고 있습니다. 검색 필드는 필요한 만큼 추가할 수 있습니다.

3. 검색 쿼리 사용

이제 검색 기능을 사용하여 API 엔드포인트에 검색 쿼리를 전달할 수 있습니다. 기본적으로 검색 쿼리는 URL 쿼리 매개변수로 전달되며, 설정에서 SEARCH_PARAM으로 지정한 매개변수 이름이 사용됩니다.

예를 들어, search라는 매개변수를 사용한다면 다음과 같이 검색 쿼리를 전달할 수 있습니다.

GET /your-endpoint/?search=query

위의 예제에서는 query라는 검색어를 포함하는 결과를 반환합니다.

마무리

이렇게 Django REST framework에서 검색 기능을 추가하는 방법을 알아보았습니다. 필요한 필드를 지정하여 간단하게 검색 기능을 구현할 수 있습니다. 추가적인 옵션 및 고급 검색 기능에 대해서는 Django REST framework 공식 문서를 참조하시기 바랍니다.

참고 자료