[Django REST framework]Quickstart

2017. 3. 9. 22:41·Development/Django

### 안되는 영어로 구글 번역하며 보고 있습니다. 원본은 http://www.django-rest-framework.org/tutorial/quickstart/ 입니다. ###

Quickstart

관리자가 시스템의 사용자와 그룹을 보고 편집할 수 있도록 간단한 API를 만들 계획입니다.

Project setup

tutorial이라는 새로운 Django 프로젝트를 만든 다음, quickstart라는 새로운 앱을 시작합니다.

# Create the project directory

mkdir tutorial

cd tutorial

 

# Create a virtualenv to isolate our package dependencies locally

virtualenv env

source env/bin/activate  # On Windows use `env\Scripts\activate`

 

# Install Django and Django REST framework into the virtualenv

pip install django

pip install djangorestframework

 

# Set up a new project with a single application

django-admin.py startproject tutorial .  # Note the trailing '.' character

cd tutorial

django-admin.py startapp quickstart

cd ..

이제 데이터베이스를 동기화합니다.

python manage.py migrate

우리는 password1234라는 암호를 가진 admin이라는 초기 사용자를 생성할 것입니다. 이 예에서 나중에 해당 사용자로 인증합니다.

python manage.py createsuperuser

일단 데이터베이스를 만들고 초기 사용자를 생성하고 갈 준비가 되면, 앱의 디렉토리를 열면 코딩이 시작됩니다.

Serializers

먼저 약긴의 serializers를 정의할 것입니다. 데이터 표현을 위해 사용할 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를 사용하여 하이퍼 링크된 릴레이션을 사용하고 있습니다. 기본 키와 다양한 다른 관계를 사용할 수도 있지만 하이퍼 링크는 좋은 RESTful 설계입니다.

Views

맞아, 우리는 몇 가지 견해를 적어 두는 편이 나을 것입니다. 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

여러 개의 뷰를 작성하는 대신에, 모든 공통적인 행동을 ViewSets라는 클래스에 그룹화합니다.

필요하다면, 이들을 개별 뷰로 쉽게 분할할 수 있지만 뷰 세트를 사용하면 뷰 논리를 매우 간결하게 유지할 수 있을 뿐 아니라 매우 간결하게 유지할 수 있습니다.

URLs

이제 API URL을 연결해 보겠습니다. tutorial/urls.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'))

]

views 대신에 viewsets를 사용하기 때문에, 뷰 집합을 라우터 클래스에 등록하기만 하면 API의 URL conf를 자동으로 생성할 수 있습니다.

API URL을 더 많이 제어해야 한다면, 일반 class-based view를 사용하고 명시적으로 URL conf를 작성할 수 있습니다.

마지막으로, browsable API와 함께 사용하기 위한 default login과 logout view를 포함합니다. 선택 사항이지만 API에 인증이 필요하고 browsable API를 사용하려는 경우 유용합니다.

Settings

또한 몇 가지 전역 설정을 지정하려고 합니다. Pagination을 사용하고 싶고, 우리는 API를 관리자만 액세스할 수 있기를 원합니다. 설정 모듈은 tutorial/settings.py에 있습니다.

INSTALLED_APPS = (

    ...

    'rest_framework',

)

 

REST_FRAMEWORK = {

    'DEFAULT_PERMISSION_CLASSES': [

        'rest_framework.permissions.IsAdminUser',

    ],

    'PAGE_SIZE': 10

}

좋아, 끝났어.


Testing our API

이제 우리가 만든 API를 테스트할 준비가 되었습니다. Command line에서 서버를 시작하자.

python manage.py runserver

우리는 command line에서부터 curl과 같은 툴을 사용하여 API에 액세스할 수 있습니다.

bash: curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/

{

    "count": 2,

    "next": null,

    "previous": null,

    "results": [

        {

            "email": "admin@example.com",

            "groups": [],

            "url": "http://127.0.0.1:8000/users/1/",

            "username": "admin"

        },

        {

            "email": "tom@example.com",

            "groups": [                ],

            "url": "http://127.0.0.1:8000/users/2/",

            "username": "tom"

        }

    ]

}

또는 httpie command line을 사용하여,

bash: http -a admin:password123 http://127.0.0.1:8000/users/

 

HTTP/1.1 200 OK

...

{

    "count": 2,

    "next": null,

    "previous": null,

    "results": [

        {

            "email": "admin@example.com",

            "groups": [],

            "url": "http://localhost:8000/users/1/",

            "username": "paul"

        },

        {

            "email": "tom@example.com",

            "groups": [                ],

            "url": "http://127.0.0.1:8000/users/2/",

            "username": "tom"

        }

    ]

}

또는 직접적으로 브라우저를 통해 URL http://127.0.0.1:8000/users/로 이동하자.

Quick start image

브라우저에서 작업하는 경우, 오른쪽 상단의 컨트롤을 사용하여 로그인해야 합니다.

멋졌습니다.

REST framework가 함께 어울리는 방법에 대한 깊이 있는 이래를 원한다면 tutorial과 API 가이드를 살펴보기 바란다.

'Development > Django' 카테고리의 다른 글

[Django REST Framework] Tutorial  (0) 2017.03.11
[django] 개발 과정.  (0) 2017.02.07
'Development/Django' 카테고리의 다른 글
  • [Django REST Framework] Tutorial
  • [django] 개발 과정.
phpdoumi
phpdoumi
리눅스부터 인공지능까지 하나씩 해 보고 과정을 정리하자.
  • phpdoumi
    AI 세상 ?
    phpdoumi
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • Currents (0)
        • 2024.1 with Ubuntu 24.04 (0)
        • 2024.1 with Ubuntu 22.04 (0)
        • Groupware (0)
        • Spring Boot (0)
        • 스프링부트 + JPA + thymeleaf + S.. (0)
      • Cloud (6)
        • Yoga with Ubuntu 22.04 (0)
        • Ussuri with Ubuntu 20.04 (0)
        • Stein for Ubuntu 18.04 (0)
        • Queens (0)
        • RDO_Tech (0)
        • IBM Cloud private (0)
        • 교육 (0)
        • Pike release (0)
        • Ocata release (0)
        • Ocata for Ubuntu 16.04(w ce.. (0)
        • 도입절차 (0)
        • Newton for Ubuntu 16.04(w c.. (0)
        • Newton for Ubuntu 16.04(w c.. (0)
        • Newton For Ubuntu 16.04 (0)
        • Mitaka for Ubuntu 14.04(w c.. (0)
        • Liberty on Ubuntu 14.04 (0)
        • Mitaka ubuntu 14.04 (0)
        • AutoPilot (0)
        • Etc (5)
        • Mitaka (1)
        • Liberty (0)
      • Trend 기술 (5)
        • BlockChain (0)
        • AI (1)
        • Raspberry PI & Arduino (0)
        • Big Data (1)
        • Mobile (0)
        • Tensorflow (0)
        • Nutanix (1)
        • SDN (0)
        • 3D Printing (1)
        • pfsense (0)
        • BTS (0)
      • Docker&Container (2)
        • Core OS (1)
        • Docker (1)
      • Development (14)
        • bbgo (0)
        • Ansible (0)
        • ofbiz (0)
        • React (0)
        • UML Designer (0)
        • Django (3)
        • react-admin (0)
        • VSCode (0)
        • Vue.js (3)
        • Yona (0)
        • Shopping Mall (0)
        • Python (0)
        • Genkins (0)
        • 개발 환경 구축 (6)
        • Locallibrary (Python) (0)
      • 행복한경영이야기 (63)
      • Linux (6)
        • Open Source (5)
        • Ubuntu (0)
        • RedHat (0)
      • Todo (2)
      • 먹을거리 (4)
      • 관심거리 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 모바일경제연구소
    • CIO 코리아
    • itworld
    • dbguide.net
    • techm
    • splunk install
    • 끊임없이
    • yO Kang(GitHub)
    • [오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
    • Cloud Test Report(Mirantis)
    • git 한글 문서
    • grooveyou
    • Minsky Installation
    • 누구나 쉽게 이해할 수 있는 Git 입문
    • Tacademy
    • TAEWAN.KIM
  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
phpdoumi
[Django REST framework]Quickstart
상단으로

티스토리툴바