👨‍💻

002. 장고 프로젝트 생성하기

1. 가상환경 생성

💡
가상환경을 왜 만들어야 할까요? 예를 들어 A 프로젝트에서는 python 2 버전이 필요하고, B 프로젝트에서 python 3 버전이 필요하다면 버전이 충돌하는 문제가 발생합니다. 가상환경을 통해 독립적인 환경을 만들어 주고, 여기서 python뿐만 아니라 다른 다양한 패키지들을 설치하여 각 프로젝트들을 관리할 수 있게 됩니다.

1.1. 파이썬 설치 확인

구름IDE에서 컨테이너 생성 시 '소프트웨어 스택'을 python으로 선택해서 생성했다면, 기본적으로 python 3.x 버전이 설치가 되어 있습니다. 터미널에 python -V 또는 python --version 명령어를 통해 python이 설치되었는지와 동시에 버전을 확인 할 수 있습니다.
root@goorm:/workspace/MBIT# python -V Python 3.7.4
 

1.2. venv 모듈을 통해 가상 환경 생성

python 3 버전에서는 python 가상환경을 생성할 수 있는 venv 모듈이 기본으로 내장되어 있습니다.
python -m venv [가상환경이름] 명령어를 통해 가상 환경을 생성합니다.
root@goorm:/workspace/MBIT# python -m venv venv
가상환경을 생성하면 다음 사진과 같이 해당 이름의 가상환경 폴더가 생성됩니다.
notion imagenotion image
 

1.3. 가상환경 실행

다음 명령어를 통해 가상환경을 실행합니다.
$ source venv/bin/activate
 
그러면 명령줄 앞에 가상환경의 이름이 붙게 됩니다.
notion imagenotion image
 
가상환경이 잘 실행되고 있는지 확인하려면 pip list 명령어를 사용할 수 있습니다. pip list 명령어는 현재 실행되고 있는 환경에 설치된 python 모듈들의 리스트를 보여주는데, 다음 사진에서 처럼 글로벌 환경일 때와 가상 환경일 때 pip list의 결과가 다른 것을 확인할 수 있습니다.
글로벌 환경글로벌 환경
글로벌 환경
가상환경가상환경
가상환경
 
💡
pip 사용 중 다음과 같은 경고 메시지가 출력될 수도 있는데, 해당 메시지는 python 패키지 관리를 하는 pip의 버전에 대한 경고 메시지입니다. 해당 메시지는 무시해도 무방합니다. 말 그대로 에러가 아닌 경고입니다. You are using pip version 19.0.3, however version 20.3.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
 

2. django 프로젝트 생성

Django 업데이트 로드맵입니다. 현재 Django는 3.x를 쓰는 것이 일반적이며, 저희 책에서는 3.1 Version을 사용하여 기술하도록 하겠습니다.
notion imagenotion image
notion imagenotion image
https://www.djangoproject.com/download/https://www.djangoproject.com/download/
 

2.1. django 패키지 설치

pip install 명령어를 통해 현재 환경에 Django 패키지를 설치합니다.
$ pip install django
notion imagenotion image
사진처럼 마지막에 Successfully installed 메시지가 뜨면 성공적으로 설치된 것입니다.
💡
pip install django 명령어는 django의 최신 버전이 설치됩니다. 만약 특정 버전을 설치하고 싶은 경우에 pip install django==[버전] 명령어를 사용합니다. ex) pip install django==3.1
 
이제 pip list 명령어를 통해 현재 환경에 django가 설치된 것을 확인할 수 있습니다.
notion imagenotion image
django 외에도 추가적으로 설치되는 패키지들이 있는데, 이들은 django에 필요한 패키지들이 자동으로 설치된 것입니다.
 

2.2. django 프로젝트 생성

django를 설치하면 이제 django-admin 명령어를 사용할 수 있게 됩니다. 가장 대표적으로 django-admin startproject [프로젝트 명] [경로]으로, 해당 [프로젝트 명] 으로 해당 [경로]에 프로젝트를 생성하는 명령어입니다.
다음 명령어를 통해 MBIT 라는 이름으로 현재경로(.)에 프로젝트를 생성합니다. 명령어 마지막에 점(.)을 꼭 넣어주셔야 합니다!
$ django-admin startproject MBIT .
그러면 현재 경로에 프로젝트 메인 폴더와 manage.py 파일이 생성됩니다.
notion imagenotion image
 

2.3. django 프로젝트 실행

프로젝트가 정상적으로 잘 생성되었는지 확인하기 위해 다음 명령어를 통해 프로젝트를 실행시킵니다.
$ python manage.py runserver 0:80
프로젝트 웹 페이지로 접속하려면 프로젝트>실행 URL과 포트 에 등록된 URL로 접속합니다.
notion imagenotion image
notion imagenotion image
 
접속하면 다음의 오류 메시지의 페이지를 볼 수 있는데, 이는 django 프로젝트가 잘 실행되고 있지만 현재 호스트의 접속을 허가하고 있지 않다는 뜻입니다.
notion imagenotion image
모든 호스트에서 프로젝트 URL에 접근을 허용할 수 있도록 [프로젝트 명]/settings.py에서 ALLOWED_HOSTS 를 다음과 같이 수정합니다.
ALLOWED_HOSTS = ['*']
이제 다시 프로젝트 URL로 접속하면 장고의 메인화면인 로켓을 볼 수 있습니다.
notion imagenotion image

2.4. 앱 생성

이제 해당 프로젝트에서 내가 원하는 기능을 수행하는 앱을 만들어야 합니다. 장고 프로젝트에서 앱을 만드는 명령어는 python manage.py startapp [앱이름] 입니다.
다음 명령어를 통해 main이라는 이름의 앱을 생성합니다.
$ python manage.py startapp main
그러면 해당 이름으로 앱 폴더가 생성됩니다.
notion imagenotion image
앱을 생성한 뒤에는 반드시 해당 앱을 프로젝트에 등록을 해주어야 합니다. 그렇지 않으면 프로젝트는 해당 앱의 존재를 인식하지 못하고 사용할 수 없습니다.
[프로젝트 명]/settings.py에서 INSTALLED_APPS 리스트에 해당 앱 이름을 추가해줍니다.
INSTALLED_APPS = [ 'main', #앱이름 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
💡
장고에서는 리스트, 튜플, 딕셔너리 등에서 마지막 요소에도 ,를 붙이는 것을 권장합니다. 붙이지 않아도 에러가 나지는 않으나, 이는 추후에 요소를 뒤에 추가할 때 종종 ,를 빠트려서 나는 에러를 방지하기 위함입니다.