티스토리 뷰
Django로 RESTful API 서버 구축해보기 (0) - Django 설치와 가상환경설정
하눤석 2022. 4. 14. 15:19
작년 졸업프로젝트를 할 때 Django Framework를 사용하여 웹 서비스를 하나 구현했었습니다.
Django의 MTV구조와 같은 기본적인 개념들은 얼추 이해가 되었지만, 베이스 지식이 많이 부족한 상태로 진행했던터라 결과물도 많이 엉성하고 Django의 장점을 충분히 활용하여 구현하지 못했던 것 같습니다.
이제는 졸업하고 취업준비기간(사실상 백수)을 가지며 자꾸 뭔가 해보고싶은 욕구가 샘솟고 있습니다....
시간도 꽤 널널한지라 토이프로젝트로 간단하게 Django를 사용해 RESTful API 서버를 하나 구축해보도록 하겠습니다.
1. 프로젝트 주제
위에서 언급했던 대로 이번 토이프로젝트의 주제는 "Django를 사용한 RESTful API 서버의 구축"입니다.
공부하며 진행하는 프로젝트인지라 무언가 모자란 부분이 생길수도 있을 것 같습니다. 열심히 해보겠습니다.
2. 프로젝트 기간
현재 2022년 4월 14일입니다. 최근 공부하고있는 리액트나, 매일 진행하는 코테 공부 등 여러 본업(?) 들을 감안하여 자투리 시간을 투자한다고 계산하면 프로젝트의 진행기간은 2주,
최대 2022년 04월 29일까지 입니다. (오늘은 환경 셋팅만 진행할 것이기 때문에 제외했습니다.)
3. 프로젝트 목표
토이프로젝트를 해봐야겠다고 마음먹었을 때, 주변의 개발자분들께 조언을 구해보니 다들 하시는 말씀이 "무엇을 하던 정확하게 뭘 얻고 싶은지 방향성을 갖고 해라." 였습니다.
내가 부족한 점, 나에게 필요한 것, 하고 싶은 것 의 요소를 모두 감안하여 선정한 주제입니다.
프로젝트의 목표는 다음과 같습니다.
1. RESTful API의 구체적인 이해
REST API에 대해선 몇 번 사용도 해봤지만 전부 Client의 입장에서 사용해 본 경험이었습니다.
이 기회에 서버사이드에서 API가 어떤 방식으로 동작하는지, RESTful이란게 정확하게 무엇인지에 대해 알아가고 싶습니다.
2. Django의 이해도 향상
이번 기회에 Django도 함께 공부하며 Django의 구조와 동작방식에 대해 구체적으로 이해해보려 합니다.
4. 시작
개발환경입니다.
windows 10
Python 3.8.13
pyCharm
1. 가장 먼저 Django를 설치해야 합니다. (python 프로젝트 생성과 가상환경 연동은 생략하도록 하겠습니다.)
pip install django
위 명령어를 터미널에 입력하여 DJango를 설치해줍니다.
1분 이내에 Django가 성공적으로 설치되었다는 메시지가 뜹니다.
Django가 설치되었으면 실제로 서버를 구현할 프로젝트를 하나 생성해야 합니다..
django-admin help를 입력하면 django-admin에 어떤 커맨드가 존재하는지 알 수 있습니다,
.
중요하고 자주 사용하는 몇 가지를 꼽아보자면
0. stratproject : 새 프로젝트를 생성한다.
1. startapp: 앱을 생성한다.
2. runserver: 서버를 실행한다.
3. createsuperuser: 관리자를 생성한다.
4. makemigrations app: app의 모델 변경 사항을 체크한다.
5. migrate: 변경 사항을 DB에 반영한다.
6. shell: 쉘을 통해 데이터를 확인한다.
7. collectstatic: 정적자원(css, html 등) 재수집(동기화)
정도가 있습니다.
우리는 django 프로젝트를 생성할 것이므로 아래의 명령어를 사용하여 새 프로젝트를 만들어 보겠습니다.
django-admin startproject [프로젝트 이름]
위 이미지처럼 새로운 프로젝트가 생성된걸 확인할 수 있습니다.
위 파일들의 의미는 Django 공식문서에 가면 친절하게 설명되어 있습니다.
더 친절한 저는 여기다 긁어왔습니다 ㅎㅎ
(아래의 mysite는 프로젝트 이름으로 여기서는 RESTfulAPI와 동일한 의미입니다.)
- file:mysite/ 디렉토리 밖은 프로젝트를 담는 공간입니다. 그 이름은 Django 와 아무 상관이 없으니, 원하는 이름으로 변경해도 됩니다.
- manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 입니다. manage.py 에 대한 자세한 정보는 django-admin and manage.py 에서 확인할 수 있습니다.
- mysite/ 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 이 디렉토리 내의 이름을 이용하여, (mysite.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 임포트할 수 있습니다.
- mysite/__init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다. Python 초심자라면, Python 공식 홈페이지의 패키지를 읽어보세요.
- mysite/settings.py: 현재 Django 프로젝트의 환경 및 구성을 저장합니다. Django settings에서 환경 설정이 어떻게 동작하는지 확인할 수 있습니다.
- mysite/urls.py: 현재 Django project 의 URL 선언을 저장합니다. Django 로 작성된 사이트의 “목차” 라고 할 수 있습니다. URL dispatcher 에서 URL 에 대한 자세한 내용을 읽어보세요.
- mysite/asgi.py: 현재 프로젝트를 서비스하기 위한 ASGI-호환 웹 서버의 진입점입니다. 자세한 내용은 ASGI를 사용하여 배포하는 방법 를 참조하십시오.
- mysite/wsgi.py: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점입니다. WSGI를 사용하여 배포하는 방법를 읽어보세요.
출처 : https://docs.djangoproject.com/ko/4.0/intro/tutorial01/
여기서 django서버를 실행하고 싶으면 아래 명령어를 입력하면 됩니다.
python manage.py runserver
명령어를 입력하면 아래의 문구가 나오고
http://127.0.0.1:8000/로 접속했을 때 아래의 화면이 나온다면 성공입니다!
이제 외부에서 접근할 수 있도록 포트를 오픈하겠습니다.
포트를 열기 전에, 먼저 해야 할 일이 있습니다.
바로 migrate이라는 작업입니다.
아래는 아까 python manage.py runserver를 실행했을 때 나오는 문구들입니다.
위에서 6~7라인을 보시면 아래와 같은 문구가 나오게 되는데 이는 쉽게 말하면 migration 안하면 프로젝트가 작동을 안 할 수도 있다. 라는 말입니다.
you have 18 unapplied migrations. your project may not work properly until you apply the migrations for apps
: admin, auth, contenttypes, sessions.
migration이 뭘까요?
Django에서는 프로젝트를 app단위로 관리합니다.
처음 프로젝트를 만들게 되면 기본적으로 설치되는 app들이 있고, 처음 설치한 이후에 app들에 어떠한 변경사항이 있을 때 이를 적용하는 명령어가 바로 "python manage.py migrate"입니다.
요약하면 변경사항이 발생하면 이를 프로젝트에 반영하는 명령어입니다.
해야 된다니까 바로 실행하겠습니다.
python manage.py migrate
명령어를 입력한 결과입니다.
네. OK가 많은 것을 보니 적용이 잘 됐네요. 그럼 이제 아까 하려고 했던 포트를 여는 작업을 마저 하겠습니다.
Django의 설정을 관리하는 settings.py로 들어가서 ALLOWED_HOSTS를 찾겠습니다.
ALLOWED_HOSTS = []
이 부분이 비어있기 때문에 어떤 호스트에서 내 컴퓨터로 접근해도 이 요청은 차단됩니다.
따라서 여기에 Anyone (누구나) 를 뜻하는 "*"를 넣어주겠습니다.
마지막으로, 서버를 실행할 때
python manage.py runserver가 아닌
python manage.py runserver 0.0.0.0/8000 으로 실행하면
외부에서 내 컴퓨터에 8000번 포트를 사용하여 접속할 수 있게 한다는 의미입니다.
외부에서는 (내 컴퓨터 아이피:8000) 라는 주소를 통해 접속할 수 있습니다.
ex ) 111.222.333.444:8000
내 컴퓨터의 ip는 네이버 검색창에 "내아이피" 라고 치시면 나옵니다.
우선 기본 설정은 여기까지이며, 다음 포스팅부터는 프로젝트를 진행하며 게시하도록 하겠습니다.
'Toy Projects > Django - RESTful API서버 구축해보기' 카테고리의 다른 글
Django로 RESTful API 서버 구축해보기 (3) - DELETE와 PUT을 사용한 수정, 삭제 기능 구현 (0) | 2022.04.25 |
---|---|
Django로 RESTful API 서버 구축해보기 (2) - 가상 데이터를 사용한 REST API의 동작방식의 이해 (1) | 2022.04.21 |
Django로 RESTful API 서버 구축해보기 (1) - API서버 구축과 API Test tool (0) | 2022.04.18 |