우리의 Serializer 클래스를 사용하는 몇가지 API 뷰들을 어떻게 작성하는지 봅시다.
현재까지 우리는, REST framework 의 그 어떤 다른 기능도 사용하지 않을것입니다. 우리는 그저 일반 Django views 와 같은 views 만 작성해 볼겁니다.
snippets/views.py 파일을 열고, 아래 내용을 추가해 줍니다.
1 2 3 4 5
from django.http import HttpResponse, JsonResponse from django.views.decorators.csrf import csrf_exempt from rest_framework.parsers import JSONParser from snippets.models import Snippet from snippets.serializers import SnippetSerializer
우리 API 의 기본은,
존재하는 모든 snippets 들을 리스팅 하거나, 혹은 새로운 snippet 을 생성하는것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
@csrf_exempt defsnippet_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 JsonResponse(serializer.data, safe=False) 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)
우리는 이 views 에 클라이언트로부터 CRSF token 이 없는 POST 방식이 가능해야 하기 때문에,
해당 view 에 csrf_exempt 를 표시해 줍니다.
이것은 보통 원하지 않는 방식이고, REST framework view 는 사실 좀 더 이것보다 민감한것도 사용하기도 합니다. 어쨋거나, 지금은 우리의 목적을 수행 할것입니다.