1.
List() - GET semua data
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response([Link])
serializer = self.get_serializer(queryset, many=True)
return Response([Link])
2. retrieve() - GET by ID
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response([Link])
3. create() - POST data baru
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=[Link])
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers([Link])
return Response([Link], status=status.HTTP_201_CREATED, headers=headers)
4. update() - PUT (ubah seluruh kolom)
def update(self, request, *args, **kwargs):
partial = [Link]('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=[Link], partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
return Response([Link])
5. partial_update() - PATCH (ubah sebagian kolom)
def partial_update(self, request, *args, **kwargs):
kwargs['partial'] = True
return [Link](request, *args, **kwargs)
6. destroy() - DELETE data
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
7. get_queryset()
def get_queryset(self):
assert [Link] is not None, (
"'%s' should either include a `queryset` attribute, "
"or override the `get_queryset()` method." % self.__class__.__name__
)
return [Link]
8. get_serializer()
def get_serializer(self, *args, **kwargs):
serializer_class = self.get_serializer_class()
[Link]('context', self.get_serializer_context())
return serializer_class(*args, **kwargs)
9. paginate_queryset()
def paginate_queryset(self, queryset):
"""
Return a single page of results, or `None` if pagination is disabled.
"""
if [Link] is None:
return None
return [Link].paginate_queryset(queryset, [Link], view=self)