[D.R.F] Django REST framework 시작 및 초기세팅

2021. 11. 10. 17:37코딩일지/DRF

Django REST framework(DRF)란?

DRF(Django Rest Framework) 란 Django 안에서 RESTful 한 API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리입니다.

 

우리가 Django REST framework를 사용하는 이유는 아래와 같습니다.

 

  • 웹 브라우저 API는 범용성이 크기 때문에 개발을 쉽게 도와준다.
  • OAuth1 a 및 OAuth2 용 패키지를 포함한 인증 정책이 추가됨.
  • Serializers를 통한 ORM 및 비 ORM 데이터 소스를 모두 지원한다.
  • 문서화 및 커뮤니티 지원이 잘 되어있다.

 

우선 Django REST framework를 통한 개발을 시작하기에 앞서 몇 가지 개념에 대해 소개해드리겠습니다.


첫 번째로 REST,  API, RESTful API 라는 용어의 의미에 대해서 알아야 합니다.


우선 REST부터 알아볼까요? REST(REpresentational State Transfer)란 웹에 존재하는 모든 자원(resorce, ex. 이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론, 또는 규칙입니다. 현재 가장 널리 사용되고 있습니다.


쉽게 말하면 HTTP를 통해 이름으로 구분된 자원의 상태를 전송하는 방법들이라고 볼 수 있습니다.

 

다음으로 API는 Application Program Interface를 뜻합니다.


request와 response로 오가는 구조화된 데이터를 의미합니다. client와 server 간의 메신저, 매개체 역할을 통해 서로 간의 데이터를 특정 형식에 맞게 전달하는 역할을 합니다.

 

마지막 RESTful API는 REST 특징을 지키면서 API를 제공한다는 의미입니다


위의 의미가 어렵다면 "프런트엔드에서 백엔드 API를 호출할 url을 어떻게 만들 것인가?"에 대한 이야기라고 생각하셔도 됩니다.

 

REST framework는 이러한 RESTful API를 쉽게 구현할 수 있도록 도와주는 오픈 소스 라이브러리입니다.


Django REST framework도 그중 하나입니다.

 

Django의 경우에는 아래의 공식 홈페이지를 통해 관련 정보를 쉽게 얻을 수 있었습니다!

Django REST framework(DRF)

 

Home - Django REST framework

 

www.django-rest-framework.org

 

Django 초기 세팅

  • 파이썬이 설치되어있다는 가정하에 진행하겠습니다!ㅎㅎ 저는 파이썬 3.9 버전을 사용합니다.
  • 그리고 Miniconda를 설치했기 때문에 가상 환경은 miniconda로 진행하겠습니다

 

1. 가상환경 실행

가상 환경을 사용하면 독립적으로 패키지를 설치하고 관리할 수 있기에 아주 용이합니다.

  • 가상환경 생성
    conda create -n DRF_Board​
  • 가상환경 실행
    conda activate DRF_Board​

가상 환경 실행시 (base)에서 (DRF_Board)로 환경이 바뀐것을 볼 수 있습니다.

가상환경 실행 후 꼭 아래의 명령어를 입력해보시고 pip의 경로를 확인해주세요

ls -l `which pip`

제가 초기 설치를 잘못해서 꼬여서 그런 건지 저는 pip의 설치환경이 분리되지 않습니다.

저처럼 conda의 pip의 경로와 base의 pip의 경로가 혹여나 분리되지 않으시는 분이 있으실 때는 꼭

conda install pip

을 통해서 pip 환경을 아래처럼 가상 환경의 pip으로 경로가 지정되게 해 주셔야 정상적입니다.
(가상 환경 생성 시 아래의 이미지처럼 돼있다면 바로 2번으로 넘어가셔도 무방합니다! 이렇게 하지 않으면 base의 pip package들이 그대로 남아있기 때문에 pip install 및 package 적용이 되지 않습니다!!)

 

2. Django와 DRF 설치

  • Django를 설치해줍니다.
    pip install django
  • Django REST framework를 설치해줍니다.
    pip install djangorestframework

 

3. Django 프로젝트 생성 및 앱 생성

  • 프로젝트 생성
    django-admin startproject config​
  • manage.py가 생성돼있는 디렉터리(파일)로 이동 및 앱 생성(앱 생성은 manage.py가 있는 곳에서 실행해야 합니다.)
    cd config
    
    django-admin startapp boards

 

4. settings.py 환경설정

새로 생성한 apps가 있다는 것을 시스템이 알게 하기 위해 설치된 앱스에 boards를 추가해줍니다.
rest_framework를 사용하기 위해 rest_framework도 추가해줍니다.

  • settings.py에 INSTALLED_APPS 추가
    INSTALLED_APPS = [ 
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'rest_framework',
        'boards',
    ]

 

향후 RDBMS(mySQL, postgreSQL...)와 연결해줄 때 settings.py를 한번 더 수정해주겠습니다.

5. migrate

migrate를 통해서 startproject 할 때 생긴 기본 테이블을 생성합니다. (ex. admin...)

migrate는 추후 model을 생성, 혹은 수정 시에 makemigrations와 migrate를 실행해주어야 합니다.
(항상 python manage.py 명령어를 사용할 때는 manage.py가 존재하는 디렉터리에서 명령어를 실행해줍니다.)

  • migrate 실행
    python manage.py migrate

6. Runserver

  • django server 실행
    python manage.py runserver

 

아래의 화면이 뜬다면 서버가 정상적으로 실행된 것입니다.

이상으로 Django REST framework 초기 세팅에 대해서 진행했습니다.

다음에는 모델링 및 function based views, class based views의 CRUD에 대한 API 구현을 해보도록 하겠습니다.