2020. 7. 19. 14:42ㆍ위키
장고(Django) RESTful Framework 를 만드는 방법에 대해 간단하게 이야기할거에요.
Django RESTful Framework 란?
Django 는 파이썬을 이용해서 웹 서비스를 만들 수 있는 프레임워크에요. 그런데 굳이 Django 로 모든 서비스를 만들 필요가 없을 수 있어요. 모바일 어플리케이션을 만들고 데이터를 주고 받을 서버만 Django 로 만드는 경우가 있겠죠? Django RESTful Framework 는 이때 유용하게 써먹을 수 있어요. REST 가 무엇인지 잘 모른다면 아래 글들에서 정말 잘 설명해주고 있으니 참고하도록 해요.
What is REST? | Codecademy
Learn about how to design web services using the REST paradigm
www.codecademy.com
What Is an API?
You’ve likely seen the term “API” come up. Operating system, web browser, and app updates often announce new APIs for developers. But what is an API?
www.howtogeek.com
Home - Django REST framework
www.django-rest-framework.org
코드는 여기에 있어요.
hwangwoojin/django-restful-framework
Contribute to hwangwoojin/django-restful-framework development by creating an account on GitHub.
github.com
Django RESTful Framework 시작하기
먼저 pip 로 장고와 장고 RESTful Framework 를 설치해요.
$ pip install django
$ pip install djangorestframework
그리고 프로젝트를 생성해요. 저는 이름을 그냥 project 로 짓기로 했어요.
$ django-admin startproject [프로젝트이름]
$ cd [프로젝트이름]
그 다음 어플리케이션을 만들어요. 저는 이름을 그냥 app 으로 짓기로 했어요.
$ python manage.py startapp [어플리케이션이름]
어플리케이션을 만들었으면 settings.py 에 추가해야 해요. 우린 RESTful Framework 를 만들기로 했으니까 rest_framework 도 추가해야 해요.
# project/project/settings.py
INSTALLED_APPS = [
# RESTful Framework
'rest_framework',
'app',
...
]
그리고 RESTful 을 위해서 App 이라는 모델을 만들기로 해요.
# project/app/models.py
from django.db import models
# Create your models here.
class App(models.Model):
name = models.CharField(max_length=50)
description = models.TextField()
모델을 만들었으면 마이그레이션도 시켜줘요.
$ python manage.py makemigrations
$ python manage.py migrate
다음은 RESTful Framework 에서 JSON 으로 데이터를 전달하기 위한 serializer 를 새로 만들어야 해요.
# project/app/serializers.py
from rest_framework import serializers
from .models import App
class AppSerializer(serializers.ModelSerializer):
class Meta:
model = App
fields = ['name', 'description'] # fields = '__all__'
이 코드는 App 모델에서 name, description 에 해당하는 field 를 가져오도록 하는 serializer 에요. 만약에 그냥 모든 필드를 가져오고 싶다면 __all__ 을 사용해요.
이렇게 만든 serializer 를 views.py 에 적용해요.
# project/app/views.py
from rest_framework import viewsets
from .models import App
from .serializer import AppSerializer
# Create your views here.
class AppViewSet(viewsets.ModelViewSet):
queryset = App.objects.all()
serializer_class = AppSerializer
뷰를 위해서 AppViewSet 이라는 클래스를 생성했어요. serializer 는 기본적으로 클래스에 기반한 뷰를 사용해요. 이를 CBV 라고 불러요. 반대 개념으로 함수 기반 뷰 FBV 가 있어요.
Class-based views | Django documentation | Django
The Django Software Foundation deeply values the diversity of our developers, users, and community. We are distraught by the suffering, oppression, and systemic racism the Black community faces every day. We can no longer remain silent. In silence, we are
docs.djangoproject.com
urls.py 도 수정해야 해요.
# project/project/urls.py
from django.contrib import admin
from django.urls import path, include
import app.urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('app.urls')),
]
# project/app/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from . import views
# router 를 새로 만든다.
router = DefaultRouter()
router.register('App', views.AppViewSet)
urlpatterns = [
path('', include(router.urls))
]
여기까지 성공적으로 했다면 Django 페이지가 Django RESTful 페이지로 변해 있을거에요. 그럼 성공이에요.
'위키' 카테고리의 다른 글
리액트 네이티브(React Native) 빠르게 시작하기 (feat. Expo) (0) | 2020.07.19 |
---|---|
간단한 Command-line HTTP 클라이언트, Httpie (0) | 2020.07.19 |
리액트(ReactJS) 빠르게 시작하기 (0) | 2020.07.18 |
루비 온 레일즈를 위한 관리 프레임워크, ActiveAdmin (0) | 2020.07.03 |
루비 온 레일즈 v5.2 시작하기 (0) | 2020.07.01 |