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 실행 결과


출처

https://butter-shower.tistory.com/51?category=718374

'Django > TIL etc' 카테고리의 다른 글

파이썬 패키지 관리툴 poetry 소개  (0) 2022.01.21
Poetry 와 장고 프로젝트  (0) 2022.01.21
모바일 앱을 위한 장고  (0) 2022.01.20
MVC 패턴이 뭐야?  (0) 2022.01.20
Django REST Framework 가 뭐야?  (0) 2022.01.20

+ Recent posts