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

Django REST framework는 강력한 웹 프레임워크로, RESTful API를 쉽게 개발할 수 있도록 도와줍니다. 이 프레임워크를 사용하면 API 엔드포인트에서 키워드 검색 기능을 쉽게 추가할 수 있습니다.

필터링 및 검색 기능 추가하기

Django REST framework에서 키워드 검색 기능을 추가하는 가장 간단한 방법은 SearchFilter 클래스를 사용하는 것입니다. 이 클래스는 API 뷰에서 쿼리 파라미터로 전달된 검색어로 필터링할 수 있는 기능을 제공합니다.

우선, SearchFilter 클래스를 임포트해야 합니다.

from rest_framework.filters import SearchFilter

다음으로, 검색 기능을 적용할 API 뷰 클래스에 filter_backends 속성을 추가하고 SearchFilter를 포함시킵니다.

from rest_framework.filters import SearchFilter

class MyAPIView(APIView):
    filter_backends = [SearchFilter]
    search_fields = ['field1', 'field2', ...]

search_fields는 검색어로 필터링할 필드를 나타내는 리스트입니다. 검색할 필드를 추가하려면 해당 필드의 이름을 리스트에 추가하면 됩니다.

검색 기능 사용하기

검색 기능을 사용하려면, API 엔드포인트에 GET 요청을 보낼 때 search 쿼리 파라미터에 검색어를 전달하면 됩니다.

예를 들어, /api/endpoint/?search=keyword와 같은 요청을 보내면 field1field2에서 keyword를 포함하는 결과를 반환합니다.

추가적인 설정

기본적으로 SearchFilter 클래스는 기본 검색 수행 방식을 사용합니다. 하지만, 검색 필드에 따라 검색 전략을 변경하고 싶을 경우에는 search_option을 설정할 수 있습니다.

from rest_framework.filters import SearchFilter

class MyAPIView(APIView):
    filter_backends = [SearchFilter]
    search_fields = ['field1', 'field2', ...]
    search_option = 'regex' # 정규식을 사용한 검색 옵션

위의 예제에서는 search_optionregex로 설정하여 정규식을 사용한 검색 옵션을 사용합니다.

결론

Django REST framework의 SearchFilter 클래스를 사용하면 API 엔드포인트에 키워드 검색 기능을 쉽게 추가할 수 있습니다. 필요한 검색 필드를 지정하고, 쿼리 파라미터로 검색어를 전달하여 검색 결과를 확인할 수 있습니다.