From 58a7cbb133279d06a2baeafad68443cfba898a7c Mon Sep 17 00:00:00 2001 From: Emanuel Rodriguez Date: Sun, 7 Aug 2022 20:39:42 -0700 Subject: [PATCH] refactors to use more features from rest_framework this commit adds the use of Response and @api_view to the snippet views --- snippets/views.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/snippets/views.py b/snippets/views.py index 47b4c2e..bedcd68 100644 --- a/snippets/views.py +++ b/snippets/views.py @@ -1,46 +1,47 @@ -from django.http import HttpResponse, JsonResponse -from django.views.decorators.csrf import csrf_exempt -from rest_framework.parsers import JSONParser +from rest_framework import status +from rest_framework.decorators import api_view +from rest_framework.response import Response + from snippets.models import Snippet from snippets.serializers import SnippetSerializer -@csrf_exempt +@api_view(["GET", "POST"]) def snippet_list(request): if request.method == "GET": snippets = Snippet.objects.all() serializer = SnippetSerializer(snippets, many=True) - return JsonResponse(data=serializer.data, safe=False) + return Response(serializer.data) elif request.method == "POST": data = JSONParser().parse(request) serializer = SnippetSerializer(data=data) if serializer.is_valid(): serializer.save() - return JsonResponse(serializer.data, status=201) - return JsonResponse(serializer.errors, status=400) + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) -@csrf_exempt +@api_view(["GET", "PUT", "DELETE"]) def snippet_detail(request, pk): try: snippet = Snippet.objects.get(pk=pk) except Snippet.DoesNotExist: - return HttpResponse(status=404) + return Response(status=status.HTTP_404_NOT_FOUND) if request.method == "GET": serializer = SnippetSerializer(snippet) - return JsonResponse(data=serializer.data) + return Response(serializer.data) elif request.method == "PUT": data = JSONParser().parse(request) serializer = SnippetSerializer(snippet, data=data) if serializer.is_valid(): serializer.save() - return JsonResponse(serializer.data) - return JsonResponse(serializer.errors, status=400) + return Response(serializer.data) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == "DELETE": snippet.delete() - return HttpResponse(status=204) + return Response(status=status.HTTP_204_NO_CONTENT)