Backend/Django

[점프투장고] 1장 Django 개발준비

jellylucy 2021. 8. 27. 11:12

*점프 투 장고 교재 내용 참고

1-03 개발환경 준비하기


파이썬 가상 환경 사용해 보기

윈도우에서 명령 프롬프트를 실행하고 다음 명령어를 입력해 C:/venvs라는 디렉터리를 만들자.

루트 디렉터리를 반드시 C:/venvs로 해야 하는 것은 아니지만 실습 편의를 위해 이대로 지정하자.

C:\Users\pahkey> cd \

C:\> mkdir venvs

C:\> cd venvs

파이썬 가상 환경을 만드는 다음 명령어를 입력해 실행하자.

C:\venvs> python -m venv mysite

명령에서 python -m venv는 파이썬 모듈 중 venv라는 모듈을 사용한다는 의미다. 그 뒤의 mysite는 여러분이 생성할 가상 환경의 이름이다. 가상 환경의 이름을 반드시 mysite로 지을 필요는 없다. 만약 가상 환경의 이름을 awesomesite와 같이 지정했다면 책에 등장하는 mysite라는 가상 환경 이름을 awesomesite로 대체하여 읽으면 된다.

 

하지만 실습 진행의 편의를 위해 가상 환경 이름을 동일하게 하기를 권장한다.

명령을 잘 수행했다면 C:/venvs 디렉터리 아래에 mysite라는 디렉터리가 생성되었을 것이다. 이 디렉터리를 가상 환경이라 생각하면 된다. 그런데 가상 환경을 만들었다 해서 바로 가상 환경을 사용할 수는 없다. 가상 환경을 사용하려면 가상 환경에 진입해야 한다.

가상 환경에 진입하려면 우리가 생성한 mysite 가상 환경에 있는 Scripts 디렉터리의 activate 명령을 수행해야 한다. 다음 명령을 입력하여 mysite 가상 환경에 진입해 보자.

C:\venvs>cd C:\venvs\mysite\Scripts

C:\venvs\mysite\Scripts> activate (mysite)

C:\venvs\mysite\Scripts>

그러면 C:/ 왼쪽에 (mysite)라는 프롬프트를 확인할 수 있다. 이름에서 볼 수 있듯 현재 여러분이 진입한 가상 환경을 의미한다.

현재 진입한 가상 환경에서 벗어나려면 deactivate라는 명령을 실행하면 된다. 이 명령은 어느 위치에서 실행해도 상관없다.

(mysite) C:\venvs\mysite\Scripts> deactivate

c:\venvs\mysite\Scripts>

가상 환경에서 벗어났다면 C:/ 왼쪽에 있던 (mysite)라는 프롬프트가 사라졌을 것이다. 지금까지 가상 환경의 개념과 실습을 진행해 보았다. 가상 환경이라는 개념이 조금은 생소하겠지만 익혀 두면 여러분의 웹 프로그래밍 경험에 도움이 될 것이다.

장고 설치하기

드디어 장고를 설치할 차례가 왔다. 앞에서 만든 mysite 가상 환경에 장고를 설치해 보자.

명령 프롬프트 왼쪽에 (mysite) 프롬프트가 보이는지 확인하자. 만약 명령 프롬프트 왼쪽에 (mysite) 프롬프트가 보이지 않는다면 바로 이전의 실습을 참고하여 가상 환경에 진입한 상태에서 장고 설치를 진행하자.

C:\venvs\mysite\Scripts> activate (mysite) C:\venvs\mysite\Scripts>

mysite 가상 환경에 진입한 상태에서 pip install django==3.1.3 명령을 입력하자. pip은 파이썬 라이브러리를 설치하고 관리해 주는 파이썬 도구이다. pip install django==3.1.3는 pip으로 장고 3.1.3 버전을 설치하는 명령이라고 생각하면 된다. 다음 화면이 나오면 장고 설치가 잘 된 것이다

- pip은 '핍'이라 읽는다.

(mysite) C:\venvs\mysite\Scripts> pip install django==3.1.3 
Collecting django Using cached https://files.pythonhosted.org/packages/01/a5/fb3dad18422fcd4241d18460a1fe17542bfdeadcf74e3861d1a2dfc9e459/Django-3.1.3-py3-none-any.whl Collecting asgiref~=3.2.10 (from django) 
Using cached https://files.pythonhosted.org/packages/d5/eb/64725b25f991010307fd18a9e0c1f0e6dff2f03622fc4bcbcdb2244f60d6/asgiref-3.2.10-py3-none-any.whl Collecting sqlparse>=0.2.2 (from django) Using cached https://files.pythonhosted.org/packages/85/ee/6e821932f413a5c4b76be9c5936e313e4fc626b33f16e027866e1d60f588/sqlparse-0.3.1-py2.py3-none-any.whl Collecting pytz (from django) Using cached https://files.pythonhosted.org/packages/4f/a4/879454d49688e2fad93e59d7d4efda580b783c745fd2ec2a3adf87b0808d/pytz-2020.1-py2.py3-none-any.whl Installing collected packages: asgiref, sqlparse, pytz, django Successfully installed asgiref-3.2.10 django-3.1.3 pytz-2020.1 sqlparse-0.3.1 
WARNING: You are using pip version 19.2.3, however version 20.2.3 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

그런데 마지막에 경고(WARNING) 문구가 보인다. pip이 최신 버전이 아니라는 내용이다.

경고 메시지에 따라 python -m pip install --upgrade pip 명령을 입력해 pip을 최신 버전으로 설치하자.

(mysite) C:\venvs\mysite\Scripts> python -m pip install --upgrade pip
 Collecting pip Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB) |================================| 1.4MB 226kB/s Installing collected packages: pip Found existing installation: pip 19.2.3 Uninstalling pip-19.2.3: 
 Successfully uninstalled pip-19.2.3 
 Successfully installed pip-20.0.2

1-04 장고 프로젝트 생성하기

 

장고에는 프로젝트라는 개념이 있는데, 장고의 프로젝트는 하나의 웹 사이트라고 생각하면 된다. 즉, 장고 프로젝트를 생성하면 한 개의 웹 사이트를 생성하는 것과 같다. 프로젝트 안에는 여러 개의 앱이 존재한다. 이 앱들이 모여 웹 사이트를 구성한다. 여기서 앱이란 관리자 앱, 인증 앱 등과 같이 장고가 기본으로 제공하는 앱과 개발자가 직접 만든 앱을 칭한다.

 

장고에서 말하는 앱은 일반적으로 여러분이 알고 있는 안드로이드 앱, iOS 앱과는 성격이 다르다. 안드로이드 앱이 하나의 프로그램이라면, 장고의 앱은 프로젝트를 구성하는 작은 단위의 기능이다.

프로젝트 생성하기

장고 프로젝트는 여러 개가 될 수 있으므로 프로젝트를 모아 둘 프로젝트 루트 디렉터리 생성은 필수다. 이 책은 C:\projects 디렉터리를 프로젝트들의 루트 디렉터리로 정하고 진행하겠다.

C:\Users\pahke>cd \

C:\>mkdir projects

C:\>cd projects

C:\projects>

루트 디렉터리 C:\projects 를 생성하고 해당 디렉터리로 이동하였다.

그리고 다음처럼 mysite 가상환경에 진입하자.

C:\projects>C:\venvs\mysite\Scripts\activate

(mysite) C:\projects>

가상 환경으로 쉽게 진입하는 팁은 이 절의 마지막에서 설명하겠다.

이제 장고 프로젝트를 생성할 차례이다. 먼저 파이보 프로젝트를 의미하는 mysite 디렉터리를 다음과 같이 생성한다.

(mysite) C:\projects>mkdir mysite

그리고 다음처럼 mysite 디렉터리로 이동한다.

(mysite) C:\projects>cd mysite

(mysite) C:\projects\mysite>

그리고 django-admin startproject config . 명령으로 장고 프로젝트를 생성하자.

(mysite) C:\projects\mysite>django-admin startproject config .

이때 config 다음에 점 기호(.)가 있음에 주의하자. 점 기호는 현재 디렉터리를 의미한다. 위 명령의 의미는 현재 디렉터리인 mysite를 기준으로 프로젝트를 생성하겠다는 의미이다.

프로젝트가 생성되면 mysite 디렉터리 밑에는 장고가 필요로 하는 여러 디렉터리와 파일들이 생성된다. 그것들에 대해서는 좀 더 나중에 자세히 알아보도록 하자.

C:\projects 디렉터리에서 mysite 디렉터리를 생성하지 않고 다음처럼 프로젝트를 생성하는 방법도 있다. 많은 튜토리얼들이 다음의 방법을 사용한다.

(mysite) C:\projects> django-admin startproject mysite

하지만 이렇게 프로젝트를 생성하면 mysite 디렉터리 밑에 똑같은 이름의 mysite 앱 디렉터리가 생성되어 mysite/mysite와 같은 구조가 되어 버린다. 단지 공부를 하기 위해서라면 큰 상관은 없겠지만 위에서 사용한 것 처럼 mysite/config 구조로 진행하는 것이 관리하기 좋을 것이다.

개발 서버 구동하고 웹 사이트에 접속해 보기

이제 mysite 프로젝트가 생성되었으니 mysite를 구동해 볼 차례이다.

다음처럼 python manage.py runserver 명령을 입력하자.

(mysite) C:\projects\mysite>python manage.py runserver 

Watching for file changes with StatReloader Performing system checks...

System check identified no issues (0 silenced). You have 18 unapplied migration(s).

Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.

April 21, 2020 - 21:51:03 Django version 3.1.3, using settings 'config.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.

몇 가지 의미있는 정보들이 보이지만 그것들은 무시하고 가장 마지막에 보이는 문장만 주목해 보도록 하자.

Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.

장고 서버가 http://127.0.0.1:8000/ 로 시작되었다는 것과 서버를 중지하기 위해서는 CTRL-BREAK를 입력하라는 내용이다.

이렇게 개발을 위해 실행되는 장고 서버는 로컬호스트(localhost)로 실행되기 때문에 로컬 서버라고 부른다. 이 책에서는 앞으로 이렇게 실행되는 장고 서버를 로컬 서버 또는 개발 서버라고 하겠다.

이제 웹브라우저를 열고 주소창에 http://127.0.0.1:8000/을 입력해 보자.

아마 다음처럼 여러분의 웹 사이트가 보일 것이다.

http://127.0.0.1:8000/ 대신 http://localhost:8000/ 라고 입력해도 동일한 결과를 볼 수 있다. 127.0.0.1과 localhost는 모두 여러분의 PC를 가리키는 아이피 주소이기 때문이다.

아쉽게도 아직은 여러분이 만든 사이트에 친구들이 접속하기는 힘들다. 모든 사람이 이용할 수 있는 사이트는 장고로 사이트를 멋지게 만든후에 진행하도록 할 것이다. 아마도 이 책 가장 마지막 단원이 될 것 같다.

잠깐 얘기하면 다른 사람이 여러분이 만든 사이트에 접속하려면 locahost나 127.0.0.1이라는 로컬 아이피가 아닌 15.165.210.240과 같은 고정 아이피 또는 google.com과 같은 도메인이 필요하다.

내가 만든 사이트를 다른 사람과 함께 공유하는 경험을 곧 느낄 수 있을 것이다. 하지만 지금은 장고로 멋진 사이트를 만드는 것이 더 중요하니 잠깐 인내하도록 하자.

mysite 가상 환경에 간단히 진입하기

mysite 가상 환경에 진입하려면 매번 명령 프롬프트를 실행하고 c:/projects/mysite 디렉터리로 이동하여 c:/venvs/mysite/scripts/activate 명령을 수행해야 한다. 이런 일련의 과정을 한 번에 수행할 수 있는 배치 프로그램을 만들어 귀찮음을 덜어 보자.

다음과 같은 mysite.cmd 파일을 노트패드와 같은 에디터로 작성하자.

[파일 이름: C:/venvs/mysite.cmd]

 

확장자 .cmd가 붙은 파일은 배치(batch) 파일이라 부르며, 명령어 입력과 실행을 한 번에 해주는 파일이라 생각하면 된다.

배치 파일의 내용은 C:/projects/mysite 디렉터리로 이동한 다음, C:/venvs/mysite/scripts/activate 명령을 수행하라는 내용이다.

그리고 이 배치 파일이 명령 프롬프트 어느 곳에서나 수행될 수 있도록 하려면 C:/venvs 디렉터리를 시스템의 환경 변수 PATH에 추가해야 한다. 먼저 <윈도우키+R> 키를 입력하여 다음처럼 sysdm.cpl 명령을 입력하고 <확인>을 누르자.

그러면 다음과 같은 '시스템 속성' 창이 나타난다. 여기서 <고급> 탭을 선택하고 <환경 변수> 버튼을 누르자.

그러면 다음과 같은 '환경 변수' 창이 나타난다. 여기서 사용자 변수 중 <Path>를 선택하고 <편집> 버튼을 누르자.

그러면 다음과 같은 '환경 변수 편집' 창이 나타난다. 여기서 <새로 만들기> 버튼을 누르자.

그리고 다음 그림처럼 C:\venvs 디렉터리를 추가하고 <확인> 버튼을 누르자.

마지막으로 다음 '환경 변수' 창에서 <확인> 버튼을 누르자.

이렇게 하면 환경 변수 PATH에 C:\venvs 디렉터리가 추가되어 mysite.cmd 명령을 어디서든 실행할 수 있다. 명령 프롬프트를 다시 시작하자(그래야 변경된 환경 변수 PATH가 제대로 반영된다). 그리고 set path 명령을 실행하여 변경된 환경 변수 PATH의 내용을 확인해 보자. C:\venvs라는 디렉터리가 환경 변수 PATH에 포함되어 있으면 된다.

C:\Users\pahkey>set path Path=C:\Windows\system32; (... 생략 ...) ;C:\venvs PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

이제 mysite 명령(배치 파일 이름)을 실행하여 가상 환경에 잘 진입하는지 확인해 보자. 참고로 윈도우에서 확장자가 .cmd인 파일은 확장자를 빼고 입력해도 된다.

C:\Users\pahkey> mysite

(mysite) C:\projects\mysite>

이제 명령창 아무곳에서 mysite만 입력하면 쉽게 mysite 가상환경으로 진입할 것이다.


1-05 파이참 설치하고 장고 개발 서버 실행하기

파이참 설치하기

파이참은 다음 주소에 접속하면 내려받을 수 있다.

 

윈도우용 파이참 설치 파일 주소: www.jetbrains.com/ko-kr/pycharm/download/#section=windows

다운로드 받을 수 있는 파일은 Professional과 Community 두가지 이다. 하지만 아쉽게도 Professional 버전은 무료가 아니다. 하지만 이 책에서 다룰 내용들은 Community 버전으로도 충분하니 Community 버전으로 다운로드 하자. 만약 Professional을 사용할 수 있는 독자라면 Professional 버전을 사용하는 것을 추천한다. Professional 버전은 웹 개발, 특히 장고를 위한 준비가 훨씬 잘 되어 있다.

설치할 때 특별히 주의할 점은 없으므로 끝까지 <Next>를 선택하여 설치하면 된다.

파이참 실행하기

[윈도우 키]를 누르고 프로그램 목록에서 [JetBrains → PyCharm Community Edition]을 선택하면 파이참이 실행된다. 파이참을 처음 실행하는 독자라면 다음과 같은 설정 창이 나타날 것이다. 테마, 플러그인 등의 옵션은 기본값으로 선택하고 넘어가자. 필자는 책에 담을 화면을 갈무리하고자 다음과 같이 바탕이 흰색인 Light 테마를 설정했다.

이어서 다음과 같은 창이 나오면 두 번째 메뉴인 <Open>을 선택하여 앞에서 우리가 생성한 장고 프로젝트인 C:/projects/mysite를 선택하자.

여기까지 문제없이 진행했다면 다음과 같이 파이참이 정상으로 실행된다.

처음 프로젝트를 만들면 mysite 디렉터리 안에 main.py 파일이 자동으로 생성될 수 있다. 파일이 있다면 삭제 후 실습을 진행하자.

파이참 인터프리터

파이참으로 장고 프로젝트를 불러온 후 가장 먼저 해야 할 일은 장고 프로젝트가 바라봐야 할 파이썬 인터프리터 위치를 설정하는 것이다.

파이참 메뉴에서 [File → Settings]를 눌러 설정 창을 열고 [Project: mysite → Project Interpreter]를 순서대로 눌러 파이썬 인터프리터 위치를 설정할 수 있는 창을 열자. 그런 다음 오른쪽 위에 보이는 Python Interpreter를 보자. 아마도 파이썬을 설치한 디렉터리로 설정되어 있을 것이다.

하지만 지금은 가상 환경을 사용하므로 파이썬 인터프리터 위치를 가상 환경 위치로 수정해 야 한다. 다음처럼 Python Interpreter 오른쪽에 보이는 톱니바퀴 모양 아이콘을 누른 다음 <Add>를 누르자.

톱니바퀴 모양 아이콘이 가려져 있으므로 그림 참고 시 주의!

다음처럼 파이썬 인터프리터 위치를 설정할 수 있는 'Add Python Interpreter' 창이 나타난다. 여기서 <Existing environment>를 누른 다음 Interpreter 오른쪽에 보이는 <...>을 누르자.

그리고 다음처럼 C:/venvs/mysite/Scripts/python.exe를 선택한 후 <OK>를 누른다.

나머지 창도 <OK>를 눌러 설정을 마치면 파이참이 mysite 가상 환경에 있는 파이썬 인터프리터를 인식하기 시작한다.

settings.py

이제 파이참으로 장고를 개발할 준비가 완료되었다. 장고 개발을 맛보는 차원에서 장고의 설정값이 들어 있는 settings.py 파일을 수정해 보자. 파이참에서 settings.py 파일을 열어 LANGUAGE_CODE와 TIME_ZONE 설정값을 수정하자. LANGUAGE_CODE를 en-us에서 ko-kr로 수정하고 TIME_ZONE을 UTC에서 Asia/Seoul로 수정했다. 언어와 시간을 한국 값으로 바꾼 것이다.

[파일이름: C:/projects/mysite/config/settings.py]

(... 생략 ...) LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul' (... 생략 ...)

앞의 실습을 잘 진행했다면 개발 서버가 종료된 상태일 것이다. 개발 서버를 다시 구동하자.

(mysite) c:\projects\mysite>python manage.py runserver

이제 localhost:8000으로 접속하면 초기 화면이 영어에서 한글로 바뀌어 있다.