먼저 가상환경을 만든 후
django , django-rest-framework를 설치한다.
$ pip install django
$ pip install djangorestframework
$ django-admin startproject movie_api
$ python manage.py startapp movies
settings.py 에서 DRF와 만든 앱을 등록한다.
# movie_api/movies/models.py
from django.db import models
class Movie(models.Model):
title = models.CharField(max_length=30) # 제목
genre = models.CharField(max_length=15) # 장르
year = models.IntegerField() # 제작 년도
def __str__(self): return self.title
코드 작성 후 마이그레이션 마이그레이트 한다.
# movie_api/movies/serializers.py
from rest_framework import serializers
from .models import movie
class MovieSerializer(serializers.ModelSerializer):
class Meta: model = Movie # 모델 설정 fields = ('id','title','genre','year') # 필드 설정
# movie_api/movies/views.py
from rest_framework import viewsets
from .serializers import MovieSerializer
from .models import Movie
class MovieViewSet(viewsets.ModelViewSet): queryset = Movie.objects.all() serializer_class = MovieSerializer
DRF는 url을 자동으로 맵팽하는 router를 제공한다. 앞서 생성한 viewset을 router 에 연결하게 되면 자동으로 url을 맵핑 해주어 사용자가 직접 url을 맵핑하지 않아도 된다.
# movie_api/urls.py
from django.conf.urls import url,include
from django.contrib import admin
from rest_framework import routers
from movies.views import MovieViewSet
router = routers.DefaultRouter()
router.register('movies',MovieViewSet) # prefix = movies , viewset =MovieViewSet
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^',include(router.urls)),
]
위에서 router.register로 prefix를 'movies'로 설정을 해주었다.
router는 이를 바탕으로 url을 맵핑하게 된다.
URL pattern: ^movies/$ Name: 'movie-list'
URL pattern: ^movies/{pk}/$ Name: 'movie-detail'