안녕세계
[장고 AtoZ] Django REST Framewrok - ViewSet(Params) 본문
[장고 AtoZ] Django REST Framewrok - ViewSet(Params)
Junhong Kim 2018. 2. 6. 12:01728x90
반응형
안녕하세요!
이번 포스팅에서는 지난 포스팅에서 만들었던 ViewSet을 커스텀해보도록 하겠습니다.
DRF의 ViewSet 기능을 활용하여 기본 CRUD를 만드는 것이 간편하지만 추가적인 작업을 위해서는 다른 방법을 거쳐야합니다.
[blog/views.py]
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
def get_queryset(self):
qs = super().get_queryset()
search = self.request.query_params.get('search', '')
if search:
qs = qs.filter(message__icontains=search)
return qs
get_queryset() 메서드를 재정의하면 두가지 조건에 대해 수행할 수 있습니다.
params로 search가 존재할 때 search 내용에 해당하는 데이터만 불어올 수 있고,
search 키워드가 존재하지 않으면 기본 GET 요청이 이루어집니다.
즉, 아래 API 요청이 가능하다는 말이죠! 결과를 보겠습니다
http://localhost:8000/blog/post/
기존에 만들었던 /blog/post/ API가 정상적으로 작동합니다.
http://localhost:8000/blog/post/?search=
새롭게 추가한 /blog/post/?search= API 역시 정상적으로 작동되는것이 확인됩니다.
이번 포스팅은 매우 짧죠? ㅎㅎ
다음 포스팅에서는 params가 아닌 /blog/post/something 에 해당하는 API를 만들어보겠습니다
감사합니다.
728x90
반응형
'Server > Django' 카테고리의 다른 글
[장고 AtoZ] Django REST Framework - CBV(APIView) (0) | 2018.02.07 |
---|---|
[장고 AtoZ] Django REST Framewrok - ViewSet(Custom) (0) | 2018.02.06 |
[장고 AtoZ] Django REST Framewrok - ViewSet (0) | 2018.02.06 |
[장고 AtoZ] settings.py 파일 분할 (0) | 2018.02.05 |
[장고 AtoZ] SECRET KEY 분리 (1) | 2018.02.05 |
Comments