Last active
January 26, 2018 17:24
-
-
Save toransahu/bcdb1a6beb5da0475c8c056837da940f to your computer and use it in GitHub Desktop.
Django REST framework VIEW Implementation Approach: Class Based + Inherit APIView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from snippets.models import Snippet | |
from snippets.serializers import SnippetSerializer | |
from django.http import Http404 | |
from rest_framework.views import APIView | |
from rest_framework.response import Response | |
from rest_framework import status [ from rest_framework import status] | |
class SnippetList(APIView): | |
""" | |
List all snippets, or create a new snippet. | |
""" | |
def get(self, request, format=None): | |
snippets = Snippet.objects.all() | |
serializer = SnippetSerializer(snippets, many=True) | |
return Response(serializer.data) | |
def post(self, request, format=None): | |
serializer = SnippetSerializer(data=request.data) | |
if serializer.is_valid(): | |
serializer.save() | |
return Response(serializer.data, status=status.HTTP_201_CREATED) | |
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) | |
class SnippetDetail(APIView): | |
""" | |
Retrieve, update or delete a snippet instance. | |
""" | |
def get_object(self, pk): | |
try: | |
return Snippet.objects.get(pk=pk) | |
except Snippet.DoesNotExist: | |
raise Http404 | |
def get(self, request, pk, format=None): | |
snippet = self.get_object(pk) | |
serializer = SnippetSerializer(snippet) | |
return Response(serializer.data) | |
def put(self, request, pk, format=None): | |
snippet = self.get_object(pk) | |
serializer = SnippetSerializer(snippet, data=request.data) | |
if serializer.is_valid(): | |
serializer.save() | |
return Response(serializer.data) | |
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) | |
def delete(self, request, pk, format=None): | |
snippet = self.get_object(pk) | |
snippet.delete() | |
return Response(status=status.HTTP_204_NO_CONTENT) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment