일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- restful
- web
- REST
- migrate
- virtual environment
- http
- 서버설계
- API
- djangorest
- server
- 파이썬
- restapi
- secretkey
- 장고
- 사용자인증
- restfulapi
- django 시간 설정
- 웹
- 분리설정
- 환경분리
- 서버구동
- 환경설정하기
- url
- migrations
- PYTHON
- SOAP API
- rest framework
- resful
- 서버 만들기
- Django
- Today
- Total
grape
Django로 RESTful API 서버 설계하기 (1) 본문
restful API 서버 란 ?
API 서버로 REST 원리의 규칙을 적용하여 만든 API 서버
(자세한 설명은 REST, REST API, RESTful API 란? 글 및 구글링 참조)
개발환경
window + Python 3.8 + PyCharm
목표
Django rest framework 튜토리얼 학습
간단한 주소록 구현
Django 설치, 실행하기
파이썬과 파이참이 설치되어있다고 가정한다.
1. 프로젝트 생성 (1번째 방법)
일단 가장 먼저 파이참으로 새로운 프로젝트를 생성한다.
새로운 프로젝트를 생성할때 가상환경을 새로 생성할지 기존에 사용하던 가상환경을 사용할지 선택하게 된다 .
- New environment usion = Virtualenv <= 이 체크 부분이 새로운 가상환경 생성
- Previously configured interpreter <= 이 체크 부분이 기존 환경을 사용
C드라이브에 restful_django라는 폴더 안에 새로운 프로젝트를 생성하는데 Base가 되는 Python은 anaconda3로 설치한 Python으로 만든다는 설정이다.
여기서 Location 부분에 venv 라고 되어있는 부분에 밑줄이 들어가있는데 venv는 가상환경이다.
이 가상환경은 파이참으로 프로젝트를 생성할 시 자동으로 생성된다.
- 가상환경 이란?
가상 환경을 사용하는 이유는 생각보다 간단한다. 프로젝트별로 사용하는 패키지가 다르기 때문에다.
즉, 사용하지 않는 패키지나 버전이 다른 패키지들을 독립하여 관리하기 위해서 가상환경을 사용한다. 가상환경을 사용하면 가상환경 끼리는 패키지가 독립적으로 관리되서 필요한것만 설치할 수 있다.
예를 들어 A 프로젝트에서 1,2,3 패키지가 필요하고 B 프로젝트에서는 3,4,5 패키지가 필요하다고 가정을 해보자.
이제 두개의 프로젝트를 모두 빌드하기 위해 1,2,3,4,5 패키지가 모두 설치되어있어야 하고, 이 상태에서 A 프로젝트를 빌드하게 되면 사용하지 않는 4,5 패키지도 함께 설치되어 자원이 낭비 된다. 하지만 A프로젝트를 위한 가상환경 Va와 B프로젝트를 위한 가상환경 Vb를 만들어서 각각 가상환경에 프로젝트에 필요한 패키지만 설치하게 되면 빌드할 때 필요한 패키지만 사용할 수 있어서 자원이 낭비되는 걸 줄일 수 있으며 관리에도 용이해 진다.
2. Django 설치
프로젝트를 생성하게 되면 위 화면처럼 생성이 된다.
- main.py 가 없는 상태에서 생성될 수 도 있다.
- main.py가 중요할 수도 있지만 필자 같은 경우 그냥 삭제하고 사용한다. (main.py가 여기서 중요한 것은 아님!)
- 여기서 중요한 것은 터미널 부분을 보면 (venv) C:\restfulapi_django> 라고 되어 있는데 여기서 (venv) <= 이부분이 중요하다. (venv)라고 되어 있는 이유는 현재 가상환경에 접속해있다는 뜻 !
이제 새로 생성한 프로젝트내에 설치된 패키지를 확인해보면 위 사진처럼 pip와 setuptools만 설치되어 있는 것을 확인할 수 있다.
명령어: pip list
명령어 확인 말고도 파이참 상단 부분에서 File => Settings.. =>Project: 프로젝트 이름 =>Python Interpreter 부분에 들어가서 확인할 수도 있다.
이제 Django를 프로젝트에 설치해 준다.
명령어: pip install django
터미널 환경에서 명령어를 입력해주면 해당 프로젝트내에 django가 정상적으로 설치되는 것을 확인할 수 있다.
그 후 pip list로 정상적으로 설치되었는지 확인해준다.
- pip install django로 설치하면 최신 버전으로 설치가 되며 버전같은 경우 지정해서 다른 버전도 설치할 수 있다.
django를 설치한 후 터미널에서 "django-admin"이라는 명령어를 입력하면 위와 같은 결과를 볼 수 있다.
- django-admin
django-admin은 django의 관리 작업을 위한 커맨드 라인으로 django-admin [options]을 입력해서 command 명령어를 입력할 수 있고 "django-admin"만 입력하면 어떤 command가 있는지 결과를 알려준다.
- django를 관리하기 위한 세 가지 방법
1. django-admin [options]
2. django -m django [options]
3. django manage.py [options]
- django의 주요 command
1. startapp: 앱을 생성한다.
2. runserver: 서버를 실행한다.
3. createsuperuser: 관리자를 생성한다.
4. makemigrations app: app의 모델 변경 사항을 체크한다.
5. migrate: 변경 사항을 DB에 반영한다.
6. shell: 쉘을 통해 데이터를 확인한다.
7. collectstatic: 정적자원(css, html 등) 재수집(동기화)
3. Django Project 생성
터미널에서 python-admin startproject [프로젝트 이름] 명령어로 입력하면 새로운 Django 프로젝트가 생성된다.
여기서 ! 새롭게 생성한 프로젝트는 새로운 프로젝트 환경이기때문에 지금 현재 프로젝트의 환경과 차이가 있다 그렇기 때문에 새롭게 생성한 Django 프로젝트 환경으로 다시 접속해 줘야 한다.
새롭게 생성한 Django 프로젝트로 환경으로 다시 파이참을 실행하면 위 사진처럼 실행되게 된다.
사진을 보면 최상위 폴더가 달라진 것을 확인할 수 있다 원래 기존 프로젝트에서 최상위 폴더는 restfulapi_django 였지만 현재는 restapi_django 로 바뀐걸 볼 수 있다. 그리고 가상환경 또한 venv 에서 base로 변경되어 있는걸 볼 수 있다.
여기서 중요한 것은 가상환경을 다시 잡아줘야한다는 것 !
- 가상환경 다시 잡기(venv)
제일 먼저 File => Settings.. =>Project: 프로젝트 이름 =>Python Interpreter 부분에 들어가서 보면 현재 설정된 환경 상태를 볼 수 있다. 여기서 사진에 보이는 톱니바퀴(설정) 을 클릭 하면 add 부분이 나오게 되는데 add 를 클릭하게 되면 환경 설정을 변경할 수 있는 부분이 나온다.
위 사진 처럼 자동으로 현재 프로젝트 환경에서 venv(가상환경)가 설정되서 잡히는걸 확인할 수 있다. 저 상태에서 아무것도 건들지 말고 바로 ok 버튼을 누르면 환경 설정이 변경되는걸 확인할 수 있다.
그러면 위 사진처럼 가상환경이 새롭게 만들어지며 설정이 된다.
설정을 다하고 나오게 되면 위 사진에서 확인할 수 있듯이 venv 환경이 만들어 지고 터미널 환경도 (base)에서 (venv)환경으로 변경된 것을 확인할 수 있다.
- 현재 이 방법으로 프로젝트를 생성하게 되면 새롭게 프로젝트를 만들고 새롭게 가상환경을 다시 설정한 것이기 때문에 기존에 설치했던 패키지(django)가 설치가 되어 있지 않다. 그래서 django를 새롭게 다시 pip install django로 설치해 줘야 한다.
4. django Server 실행
Django를 다시 설치하고 난 후 "python manage.py runserver " 명령어를 입력하면 해당 로컬 IP주소와 함께 서버가 실행되는 것을 확인할 수 있다.
이제 해당 "http://127.0.0.1:8000/" 으로 접속하게 되면 성공적으로 서버를 실행했다는 화면이 나오게 된다. !
- 서버를 끄고 싶을때 ctrl + c 를 누르면 해당 서버가 종료된다.
1. 프로젝트 생성 (2번째 방법)
cmd(명령프롬프트)창을 실행 시킨다. cmd창을 키는 방법은 window+r => cmd 확인 누르면 실행 된다.
그 후 프로젝트를 생성할 경로를 지정해 준다. 저 같은 경우 C드라이브 에서 폴더를 생성한 후 진행할 것이기 때문에 경로를 C드라이브로 설정한 다음 restapi_project 라는 폴더를 생성했습니다.
- cd .. : 이전 경로로 이동
- cd [원하는 경로]: 원하는 경로(ex- 폴더)로 이동
- md [폴더 이름]: 새로운 폴더 생성
restapi_project 폴더로 이동한 후 또한번 rsetapi 라는 폴더를 생성했다. 그 후 다시 restapi 폴더로 경로를 이동 시켰다.
현재 restapi이 폴더 안에다가 새로운 가상환경을 만들 것 이다.
restapi폴더의 경로로 접속한 상태에서 "python -m venv 가상환경 이름" 명령어를 입력하면 가상환경이 생성 되는 것을 확인할 수 있다.
가상환경 생성 후 "가상환경 이름\scripts\activate" 명령어를 입력하면 가상환경에 접속하게 된다.
가상환경에 접속하게 되면 위 사진에서 보이듯이 왼쪽에 (가상환경 이름) 이라고 나온다. 그리고 나서 현재 가상환경에 설치된 패키지를 확인하기위해 "pip list"를 입력하면 현재 환경에 설치되어 있는 패키지들을 확인할 수 있다.
아까와 똑같은 방법으로 현재 가상환경에서 "pip install django" 명령어로 django를 설치해 준다.
django 설치를 해준 다음 새로운 프로젝트를 생성해 준다.
명령어: django-admin startproject 프로젝트 이름
이제 새로 만든 프로젝트를 파이참으로 실행 시켜주는데 Open을 눌러서 새로 만든 프로젝트의 최상위 폴더를 클릭한 후 실행 시켜준다.
현재 상황 restapi_project(폴더) => restapi(폴더) => myvenv(가상환경), 새로운 프로젝트 가 있는 상황 여기서 새로운 프로젝트의 최상위 폴더를 클릭해서 실행 !
그럼 위 사진처럼 실행 화면을 볼 수 있는데 사진에서 보면 알 수 있듯이 가상환경이 잡혀서 있는 상태가 아니다 현재 이상태에서 django 관련 명령어를 입력해도 실행이 되지 않아서 가상환경을 잡아줘야 한다.
File => Settings.. =>Project: 프로젝트 이름 =>Python Interpreter 부분에 들어가서 Existing environment를 눌러서 새롭게 만든 가상환경을 잡아주면 된다. Existing environment의 interpreter 부분에서 맨 오른쪽 "..." 부분을 클릭 한다.
"..." 부분을 클릭하게 되면 가상환경을 잡을 수 있는 화면이 나오는데 새롭게 만든 가상환경(저 같은 경우 myvenv)를 눌러서 Scripts 안에 있는 python.exe 파일을 눌러서 경로를 설정해주면 새롭게 만든 가상환경으로 환경이 잡히게 된다.
- 만약 해당 방법으로 가상환경이 안잡히면 기존에 잡아둔 가상환경이 많아서 그런것일 수도 있다. 기존에 잡아둔 가상환경을 몇개 삭제 후 만들어 주면 실행 될 것이다.
그럼 아까와 똑같이 (base) 상태에서 (myvenv) 환경으로 바뀐걸 볼 수 있다. 그 후 django server 실행 명령어를 입력하면 정상적으로 서버가 실행 되는 것을 확인할 수 있다.
이제 똑같이 해당 로컬 IP주소로 접속하면 위 사진처럼 성공적으로 서버를 실행 했다는 화면을 볼 수 있다. !!
현재 제가 알고 있는 방법은 이 방법 뿐이라서 현재는 이렇게 실행 합니다... ... .. 혹시라도 더 쉽고 빠른 방법이 있으면 댓글 남겨주세요 ............. ㅠ__ㅠ
그리고 앞으로는 첫번째 방법으로 만든 프로젝트 환경으로 포스트할 예정 입니다. !
- 해당 글은 유튜브 mychew__ 님의 채널의 동영상을 보고 학습 및 정리한 글 입니다.
참고
www.youtube.com/watch?v=GDmm4JH4loc&t=1994s
'웹 프로그래밍 > Django' 카테고리의 다른 글
[Django 01] - 동작 원리 및 기본 설정 (0) | 2021.05.27 |
---|---|
Django로 RESTful API 서버 설계하기 (5) (0) | 2021.05.24 |
Django로 RESTful API 서버 설계하기 (4) (0) | 2021.05.23 |
Django로 RESTful API 서버 설계하기 (3) (0) | 2021.05.20 |
Django로 RESTful API 서버 설계하기 (2) (0) | 2021.05.13 |