python -m venv (๊ฐ์ํ๊ฒฝ ์ด๋ฆ)
pip install djangorestframework
pip install django
django-admin startproject (ํ๋ก์ ํธ ์ด๋ฆ)
ํ๋ก์ ํธ ์์ฑํ cd (ํ๋ก์ ํธ ์ด๋ฆ)
์ผ๋ก ํด๋ ์ด๋
python manage.py startapp post
Django Rest Framework๋ ๋ฑ๋ก ํด์ผํ๋ค.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'post.apps.PostConfig',
]
๊ณ์ธต์ ์ผ๋ก URL
์ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋ถํ ํ๋ค.
from django.contrib import admin
from django.urls import path, include
import post.urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(post.urls)),
]
class Post(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
python manage.py makemigrations
python manage.py migrate
์ด๋ค ํด๋์ค์ ์ด๋ค ํ๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ์๋ ค์ค๋ค.
from .models import Post
from rest_framework import serializers
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['title', 'body']
# ๋ชจ๋ ํ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ '__all__' ์ฌ์ฉ ๊ฐ๋ฅ
rest_framework
์ viewsets๋ชจ๋๊ณผ ์์ฑํ ๋ชจ๋ธ๊ณผ Serializer์ถ๊ฐ
from rest_framework import viewsets
from .models import Post
from .serializer import PostSerializer
Django Rest Framework
๋ Claa Base View๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ ํด๋์ค๋ฅผ view
๋ก์จ ์์ฑํ๋ค.
viewsets
์ ModelViewSet์ ์์๋ฐ๋๋ค.
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
rest_framework
์ routers
์์ DefaultRouter์
include
์ ์์ฑํ views.py
๋ฅผ ์ถ๊ฐํด์ค๋ค.
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from . import views
rest_framework
๋ Router๋ฅผ ์ฌ์ฉํด URL
์ ๊ฒฐ์ ํ๋ค.
์๋์ ๊ฐ์ด ์์ฑํ๋ฉด CRUD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก URL
์ ์ค์ ํ๋ค.
router = DefaultRouter()
router.register('post', views.PostViewSet)
urlpatterns = [
path('', include(router.urls))
]