[Django/장고] Django REST Framework 튜토리얼
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
웹 브라우저로 들어가보면 아래와 같은 결과가 나올 것이다.

야호 튜토리얼 끝!
'Computer Engineering > Django 장고' 카테고리의 다른 글
[Django/장고] 모바일 앱을 위한 장고 (0) | 2019.07.03 |
---|---|
[Django/장고] DRF(Django Rest Framework)란 (0) | 2019.06.28 |
[Django/장고] MVT 패턴이란 (1) | 2019.06.24 |
댓글
이 글 공유하기
다른 글
-
[Django/장고] 모바일 앱을 위한 장고
[Django/장고] 모바일 앱을 위한 장고
2019.07.03장고는 파이썬 기반의 하이레벨 웹 프레임워크다. 꽤 오랫동안 사용되기도 했고… 매우 안정적이기도 하고… 한번 사용하면 개발속도가 엄청 빠르기도 하고… 이미 나와있는 자료들도 많아서 배우기 쉬울 것이다. 이 글은 아래와 같은 사람들이 보면 좋을 것 같다! 프론트 개발자인데 Firebase와 같은 DBaaS(DB as a Service) 플렛폼 사용할 때 장고 개발자인데 최근에 React/Angular 또는 모바일 앱을 사용하려 할 때 프론트엔드 시작하는 개발자인데 백엔드 개발에 어려움을 겪고 있을 때 성숙한 프레임 워크를 사용하여 백엔드 서비스를 구축하고 싶을 때 왜 Django를 Angular, React 또는 Mobile SDK와 함께 사용하는 것이 간단하지 않을까? 장고는 Full Stack 웹… -
[Django/장고] DRF(Django Rest Framework)란
[Django/장고] DRF(Django Rest Framework)란
2019.06.28RESTful이란 RESTful이란 Representational State Transfer의 줄임말이다. 먼저 REST에 대해서 소개를 하자면, http의 url과 http method(GET, POST, PUT, DELETE)를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐(framework)라고 생각하면 된다. 하나의 URL로 우리는 최소 4가지의 HTTP method를 전송할 수 있다. 스마트폰이 등장하기 전 IT 기업들은 웹 페이지를 보여주는 웹서버만 구현하면 됬다. 그 웹 서버에서 DB 서버의 데이터도 읽어오고 사용자들이 글을 남기면 DB 서버에 저장까지 하는 기능을 모두 담당했다. 하지만 스마트폰이 출시되고, 어플리케이션의 등장으로 더이상 웹으로만 서비스를 제공하는 것에는 한계가 있… -
[Django/장고] MVT 패턴이란
[Django/장고] MVT 패턴이란
2019.06.24웹 프로그램 개발 시 일반적으로 언급되는 MVC 패턴에 대한 소개는 이전 포스팅에서 했었다. 2019/06/11 - [분류 전체보기] - MVC 패턴이란 MVC 패턴이란 MVC 패턴 디자인 패턴 중 하나로, Model, View, Controller의 약자이다. (디자인 패턴 : 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여… butter-shower.tistory.com MVT 패턴이란 장고 프레임워크에서는 View를 Template, Controller는 View라고 표현하며, MVC를 MVT 패턴이라고 한다. 모델은 데이터 베이스에 저장되는 데이터를 의미하는 것이고, 템플릿은 사용자에게 보여지는 UI부분을, 뷰는 실질적으로 프…
댓글을 사용할 수 없습니다.