Django REST Framework를 사용하다 - 1

Python 3.6 CentOS7 설치


1.IUS Community Project Repository를 yum Repository에 추가

$ yum install -y https://centos7.iuscommunity.org/ius-release.rpm


2.Python 3.6이 존재하는지 확인

$ yum search python36


3.Python 3.6 설치

$ yum install -y python36u python36u-libs python36u-devel python36u-pip


4.설치 확인

$ python3.6 -V -> Python 3.6.0이 출력됨


5.심볼록 링크 설정

현재 python 커맨드가 구버전(2.7)으로 되어있는 경우 이를 변경해줍니다.

$ ls -l /bin/python*



현재 python 명령어가 python 2.7에 연결되어 있는 것을 볼 수 있습니다.

이것을 제거하고 새로 설치한 python3.6으로 링크를 걸어줍니다.

$ unlink /bin/python -> 기존 링크 제거한다
$ ln -s /bin/python3.6 /bin/python -> 3.6버전으로 새로 링크를 만든다


Python의 Package Manager인 PIP도 함께 링크를 걸어줍니다.

$ ln -s /bin/pip3.6 /bin/pip


6.최종확인

$ python -V -> Python 3.6.0이라고 출력된다.


Django REST Framework 사용하기


1.Django, Django-REST Framework 설치

#Django와 Django REST Framework를 설치한다
pip install django
pip install djangorestframework


2.Project 생성

$ mkdir workspace -> 작업할 공간 생성
$ django-admin.py startproject tutorial -> Project 폴더 생성

3.Application 생성

$ cd ./tutorial
$ django-admin.py startapp quickstart -> Application 폴더 생성

4.Directory 구조 확인

$ cd ../
$ find .



Project와 Application이 생성된 것을 볼 수 있습니다.

5.Test를 위한 Serializer 생성

먼저 Serializer를 생성해 보도록 합니다.

vi [project directory]/tutorial/quickstart/serializers.py -> Serializer 파일을 생성
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')


6.Test를 위한 View 생성

vi [project directory]/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


7.URL 세팅

vi [project directory]/tutorial/url.py
from django.conf.urls import url, include
from rest_framework import routers
from tutorial.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 = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]


8.Setting 변경

Application 추가

vi [project directory]/tutorial/settings.py
INSTALLED_APPS = (
...
'rest_framework', //REST Framework를 추가해준다
)


호스트 세팅변경

허용 호스트 이름 세팅을 하지 않으면 위와 같은 에러가 발생합니다.

Django를 돌리고 있는 서버의 호스트 주소로 접근하려면 허용 호스트 설정을 변경해주어야 합니다.

$vi ./tutorial/settings.py -> Project 폴더내에 settings.py





ALLOWED_HOSTS라고 되어있는 부분에 서버의 도메인 또는 IP주소를 적어줍니다.



9.Django 구동




$ python manage.py runserver

보통 위의 명령어를 통해 Django를 실행하게 됩니다.

위의 명령어가 수행되면 http://localhost:8000에 서버가 구동된다고 안내 메시지가 나오게 됩니다.

즉, 디폴트로 localhost의 8000포트에서 Django 서버가 구동된다는 얘기입니다.

이를 변경하고 싶다면 위의 API 문서에 나와있는대로 runserver 다음에 인자값을 주면 됩니다.

$ python manage.py runserver [domain or IP address]:[port number]

만약 아래와 에러가 발생한다면






다음의 명령어를 통해 서버를 구동할 수 있습니다.

$ python manage.py runserver 0:8000


그리고 서버의 IP주소와 Port번호를 통해 웹브라우저에서 접속하면 아래와 같은 화면이 나오게 됩니다.



댓글()