Computer Science/BackEnd

장고 DRF #0 | Django REST framework 튜토리얼

토마토. 2022. 9. 9. 17:40

Quickstart - Django REST framework (django-rest-framework.org)

 

Quickstart - Django REST framework

We're going to create a simple API to allow admin users to view and edit the users and groups in the system. Create a new Django project named tutorial, then start a new app called quickstart. # Create the project directory mkdir tutorial cd tutorial # Cre

www.django-rest-framework.org

 

 

DRF Django REST framework
프로젝트 셋업
django-admin startproject tutorial .
django-admin startapp quickstart

으로 장고 프로젝트를 시작해보자. 

 

serializer

데이터를 통신 가능한 형태로 변환해주는 serializer를 정의해줄 것이다. 

from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializeer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']
class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']

 

views

api가 두 어플리케이션이 상호작용할 수 있게 해주는 프로토콜의 총 집합이라면, 

endpoint는 API가 서버에서 리소스에 접근할 수 있게 해주는 URL이라고 할 수 있다. 

커뮤니케이션 채널의 한쪽 끝에 해당하는 URI

from django.shortcuts import render
from django.contrib.auth.models import User, Group 
from rest_framework import viewsets, permissions
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer

# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated]

class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    permission_classes = [permissions.IsAuthenticated]
urls
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    path('admin/', admin.site.urls),
]

뷰 셋을 이용해서 뷰 셋을 라우터 클래스에 등록하기만 하면

API에 대한 URLconf를 자동으로 생성해줄 수 있다. 

 

pagination
REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE':10
}

페이지에 반환되는 객체 수를 제어하는 setting 부분

 

settings
INSTALLED_APPS = [
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
testing our API

GET http://localhost:8000/users