안녕세계

[장고 AtoZ] Django REST Framewrok - ViewSet(Params) 본문

[장고 AtoZ] Django REST Framewrok - ViewSet(Params)

Junhong Kim 2018. 2. 6. 12:01
728x90
반응형

안녕하세요!

이번 포스팅에서는 지난 포스팅에서 만들었던 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
반응형
Comments