이 영역을 누르면 첫 페이지로 이동
butter_shower 블로그의 첫 페이지로 이동

butter_shower

페이지 맨 위로 올라가기

butter_shower

[Django/장고] Django REST Framework 튜토리얼

  • 2019.06.28 18:23
  • Computer Engineering/Django 장고
글 작성자: _rian

https://www.django-rest-framework.org/tutorial/quickstart/

 

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

장고 REST 프레임워크 튜토리얼 문서를 따라하면서 익혀보도록 하자.


1. 프로젝트 만들기

새로운 장고 프로젝트를 만들고(rest_tutorial), 새로운 앱을 만들자. (quick start)

$django-admin startproject tutorial
$cd tutorial
$django-admin startapp quickstart

그리고 django REST Framework를 설치하는 것도 잊지 말자.

$ pip install djangorestframework

이제 데이터베이스를 다시 처음으로 초기화하고 슈퍼 유저를 만들자

$ python manage.py migrate
$ python manage.py createsuperuser

 

2. Serializer 생성하기

먼저 serializer를 정의하자. 이 전에 포스팅에도 나와있는데, serialize를 한다는 것은 JSON이나 XML 파일 등으로 바꾸어 주는 것을 말한다.

tutorial/quickstart/serializers.py 를 생성해 아래의 코드 내용을 넣자.

#tutorial/quickstart/serializers.py

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


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('url', 'name')

하이퍼 링크를 하는 HyperlinkedModelSerializer를 사용했는데, 다른 것들도 다 사용할 수 있다. 근데 hyperlink를하는게 좋은 RESTful 디자인이라고 한다.

3. Views.py 작성

그 다음엔 뷰를 작성해보도록 하자.

#tutorial/quickstart/views.py

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


class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

ViewSet을 사용해서 편하게 작성할 수 있다. (django rest framework가 제공해줌. 예쁘기도 하고 편하기도 하다.)

 

4. urls.py 작성하기

사실 혼자서 따라할때 여기가 자꾸 어디 urls.py인지 헷갈렸다.. tutorial/tutorial/urls.py 에 작성해야한다.

#tutorial/tutorial/urls.py

from django.contrib import admin
from django.urls import include, path
from rest_framework import routers
from quickstart import views 	#이 부분 수정함

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

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    path('admin/', admin.site.urls),
]

우리는 위에서 view 대신에 viewset을 사용해서 자동적으로 URLconf를 우리의 API에 생성할 수 있다. 그래서 그냥 라우터 클래스에 등록해주기만 하면 끝! 또, API URL들을 기본 제공하는 기능보다 더 추가하고싶다면 URL conf를 명시해주면 된다.

마지막으로, 로그인 로그아웃 디폴트를 추가해주었는데, 선택 사항이지만 매우 유용해서 추가했다. 굳~

 

5. settings.py 손보기

tutorial/tutorial/settings,.py 의 파일을 손보자. 아래의 코드 내용을 settings.py에 붙여넣어준다.

#in tutorial/tutorial/settings.py

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

그리고 INSTALLED_APPS 부분에도 'rest_framework'를 추가해준다.

#in tutorial/tutorial/settings.py

INSTALLED_APPS = [
	...
    'rest_framework',    #need to add
]

 

6. 실행

이제 수정한 파일들을 수정하도록 하자. 먼저 서버를 돌리자.

$ python manage.py runserver

 

웹 브라우저로 들어가보면 아래와 같은 결과가 나올 것이다. 

DRF 실행 결과

야호 튜토리얼 끝!

 

'Computer Engineering > Django 장고' 카테고리의 다른 글

[Django/장고] 모바일 앱을 위한 장고  (0) 2019.07.03
[Django/장고] DRF(Django Rest Framework)란  (0) 2019.06.28
[Django/장고] MVT 패턴이란  (1) 2019.06.24

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Django/장고] 모바일 앱을 위한 장고

    [Django/장고] 모바일 앱을 위한 장고

    2019.07.03
  • [Django/장고] DRF(Django Rest Framework)란

    [Django/장고] DRF(Django Rest Framework)란

    2019.06.28
  • [Django/장고] MVT 패턴이란

    [Django/장고] MVT 패턴이란

    2019.06.24
다른 글 더 둘러보기

정보

butter_shower 블로그의 첫 페이지로 이동

butter_shower

  • butter_shower의 첫 페이지로 이동

검색

메뉴

  • All Categories
  • About Me
  • Guest Book

카테고리

  • 전체보기 (223)
    • 💫 주인장 이야기 (17)
    • 🌱 와글와글뻘글 (27)
    • IT Trends (11)
    • 주인장 일상 (0)
    • 📒 내 마음대로 독서 서평 (12)
    • 머신러닝 꿈나무 (30)
      • 기본 개념 (6)
      • Hands-on! (5)
      • Paper Review (5)
      • 캐린이의 Kaggle (1)
    • 알고리즘 Algorithm (33)
      • PS (8)
    • Computer Engineering (75)
      • Python (8)
      • Cloud Computing (9)
      • C (9)
      • C++ (0)
      • Java (6)
      • Django 장고 (4)
      • 임베디드 시스템 (10)
      • 병렬 처리(Parallel Processing) (9)
      • 데이터 통신 Data communication (4)
      • 유닉스 시스템 (Unix System) (3)
      • GitHub (1)
      • 마이크로 프로세서 (micro processor) (1)
      • 데이터 마이닝 (1)
    • Error Note 🚨 (3)
    • 영어 공부 (6)
      • Live Academy (6)
    • HOBBY (2)
      • Film Log (2)

최근 글

정보

_rian의 butter_shower

butter_shower

_rian

나의 외부 링크

  • Github
  • Facebook
  • Instagram
  • LinkedIn
  • Twitter

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © _rian. Designed by Fraccino.

티스토리툴바