Last active
January 26, 2018 17:01
-
-
Save toransahu/5c99704ec721e461b5f8fa67776a6d74 to your computer and use it in GitHub Desktop.
Django REST framework VIEW Implementation Approach: Function Based + @api_view() decorator
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 rest_framework import status [ from rest_framework import status] | |
from rest_framework.decorators import api_view [ from rest_framework.decorators import api_view] | |
from rest_framework.response import Response [ from rest_framework.response import Response] | |
from snippets.models import Snippet | |
from snippets.serializers import SnippetSerializer | |
@api_view(['GET', 'POST']) | |
def snippet_list(request): | |
""" | |
List all code snippets, or create a new snippet. | |
""" | |
if request.method == 'GET': | |
snippets = Snippet.objects.all() | |
serializer = SnippetSerializer(snippets, many=True) | |
return Response(serializer.data) | |
elif request.method == 'POST': | |
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) | |
@api_view(['GET', 'PUT', 'DELETE']) | |
def snippet_detail(request, pk): | |
""" | |
Retrieve, update or delete a code snippet. | |
""" | |
try: | |
snippet = Snippet.objects.get(pk=pk) | |
except Snippet.DoesNotExist: | |
return Response(status=status.HTTP_404_NOT_FOUND) | |
if request.method == 'GET': | |
serializer = SnippetSerializer(snippet) | |
return Response(serializer.data) | |
elif request.method == 'PUT': | |
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) | |
elif request.method == 'DELETE': | |
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