Django Rest API

!! Django 기본 애플리케이션 생성 및 사용법에 대한 내용은 생략합니다.
참조 링크

rest framework 설치

pip install djangorestframework

본 구현에서는 rest framework를 따로 app 하나를 만들어 제공하였습니다.

app 생성

python3 manage.py startapp restapiapp

settings.py에 INSTALLED_APP 이하에 앱 이름과 rest_framework를 추가합니다


INSTALLED_APPS = [
    'rest_framework',
    'restapiapp',
]

프로젝트 urls.py에 다음과 같이 추가하여 연결시켜줍니다


urlpatterns = [
.
.
.
    path('restapi/',include('restapiapp.urls')),
]

restapiapp폴더에 serializers.py파일 생성

지금부터는 restapiapp/serializers.py에 serializers 정의합니다

우선 포함할 라이브러리와 모델을 포함합니다.

from rest_framework import serializers
#사용하고자 하는 모델을 포함합니다
from 앱.models import 모델클래스명
#ex) from board.models import Boards

클래스를 정의합니다

#본 구현에서는 Boards라는 모델을 가지고 사용했습니다.
class BoardsSerializer(serializers.ModelSerializer):
    class Meta:
        model =  Boards
        fields =  '__all__'

다음으로 restapiapp/views.py에 뷰를 정의합니다

from board.models import Boards
from rest_framework.response import Response
from rest_framework.views import APIView
class SerializerBoardsList(APIView):
    def get(self, request):
        chamber = Boards.objects.all()
        # 여러 개의 객체를 serialization하기 위해 many=True로 설정
        serializer = BoardsSerializer(chamber, many=True)
        return Response(serializer.data)

    # 새로운 Blog 글을 작성할 때
    def post(self, request):
        # request.data는 사용자의 입력 데이터
        serializer = BoardsSerializer(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)


restapiapp/urls.py를 생성하여 다음과 같이 정의합니다

from django.urls import path,include
from restapiapp.views import *
from rest_framework.urlpatterns import format_suffix_patterns

urlpatterns = [
    path('board/',SerializerBoardsList.as_view() ),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
urlpatterns = format_suffix_patterns(urlpatterns)

시스템을 재시작해 적용하고 /restapi/board/로 접속하여 테스트합니다

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top