[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 -
[Django/장고] DRF(Django Rest Framework)란
[Django/장고] DRF(Django Rest Framework)란
2019.06.28 -
[Django/장고] MVT 패턴이란
[Django/장고] MVT 패턴이란
2019.06.24