본문 바로가기

Django

[Django] rest-framework 시작하기

Django Rest Framework 란?

  • RESTful API 서버를 Django 안에서 쉽게 구축할 수 있도록 도와주는 오픈 소스 라이브러리
  • RESTful: Representational Satate Transfer; 규칙을 잘 지킴
  • REST: HTTP의 URL과 HTTP Method(GET, POST, PUT, DELETE)를 사용해서 API 사용 가독성을 높인 구조화된 시스템 아키텍쳐(Framework)
  • method
    • GET: 정보 읽을 떄
    • POST: 정보 추가할 떄
    • PUT: .정보를 업데이트할 때
    • DELETE: 정보를 삭제할 때

시작

1. 패키지 설치
pip install djangorestframework
2. 앱 생성
python manage.py startapp api
3. settings.py 설정
# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api',
    'rest_framework'
]

 

rest api model 생성

app 폴더 내에서 api에서 사용할 모델 클래스 생성
# model.py
from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField(max_length=300)
    cost = models.IntegerField()
app  폴더 내에서 serializer.py 생성
serializer는 django model 데이터를 json으로 바꿔준다 (직렬화)
# serializer.py
from rest_framework import serializers
from .models import Item

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ("__all__")
app 폴더 내에서 viewset 생성
# views.py
from django.shortcuts import render
from rest_framework import viewsets
from .serializers import ItemSerializer
from .models import Item
reate your views here.

class ItemViewSet(viewsets.ModelViewSet):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer
router 등록; app 폴더 내에서 urls.py 생성
# urls.py
from django.urls import include, path
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register('item', views.ItemViewSet)

urlpatterns = [
    path('', include(router.urls))
]
router 등록; 프로젝트 폴더 내에서 urls.py 설정
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('api.urls')),
]
model 변경 사항 적용
python manage.py makemigrations
python manage.py migrate
서버 접속
주소를 클릭하면 post도 해볼 수 있음

'Django' 카테고리의 다른 글

[Django] 시작하기  (0) 2023.09.01