Django Rest Framework에서 ModelViewset을 이용하여 API을 작성할 때, 쿼리 스트링을 사용하기 위해서는 django-filter 라이브러리가 필요하다.
django-filter Docs : https://www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend
Filtering - Django REST framework
www.django-rest-framework.org
일단 위의 공식문서를 따라서 작성하자면 아래와 같다.
🖥️ settings.py
INSTALLED_APPS = [
...
'django_filters',
...
]
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}
🖥️ views.py
from django_filters.rest_framework import DjangoFilterBackend
class ProductList(generics.ListAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['category', 'in_stock']
이렇게 설정 해준 뒤, filterset_fields에 있는 속성에 맞게 쿼리 파라미터를 사용하여 GET 메소드를 요청하게 되면 그에 맞는 데이터를 반환해준다. 필터의 종류는 오더링, 서치 등등이 있으므로 공식문서를 보면서 응용하면 쉽게 API을 제작할 수 있다.
'FrameWork > Django' 카테고리의 다른 글
Forbidden (403) CSRF verification failed 오류 해결하기 (0) | 2023.11.11 |
---|---|
DRF FBV, CBV (APIView, Mixin, Generic, Viewset) (0) | 2023.08.28 |
django-environ을 이용하여 환경변수 관리하기 (0) | 2023.04.09 |
ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'accounts.account', but app 'accounts' doesn't provide model ' 에러 해결 (0) | 2023.04.04 |
django-debug-toolbar을 통한 SQL 디버깅 정보 확인하기 (0) | 2023.03.17 |