파이썬에서 사용되는 웹 프레임워크 중 널리 사용되는 것이 장고 Django 와 플라스크 Flask 이다. 둘 다 장단점이 있겠지만 대략 어깨너머로 본 것과 바람을 타고온 이야기를 종합해보면 장고가 조금 더 강력하고 무거운 것 같다. 반면 플라스크는 조금 가볍고 빠르게 웹 기반 산출물을 만들기 좋은 듯 하다. 아니라고? 아니어도 어쩔 수 없다. 파이썬도 잘 모르지만 파이썬의 웹 프레임워크도 아직 잘 모른다. ;;
어찌되었건 근래에 다루고 있는 코드가 장고 기반이라 하나하나 부딪혀가며 과제를 진행시키고는 있지만 밑바닥부터 한번 정리하면서 장고에 대한 지식을 정리해 보고자 한다. 이미 장고를 많이 다뤄본 사람이라면 굳이 읽지 않아도 되는 초보자의 공부 이력이니 응원의 하트나 댓글 정도를 남겨주면 좋겠다. :-)
장고 프레임웍의 설치
장고 프레임웍이 로컬 환경에 설치되어 있다는 것을 가정했다...라고 적다가 혹시 모르니 pip 를 이용해서 장고 패키지를 설치하고 확인하는 절차를 정리해 본다. (...라고 적지만 나중에 까먹을까봐 적어둔다. 나이들어봐라, 기억력이 팍팍 감소한다 ㅜㅜ)
// 장고를 설치한다. jango 가 아니다, django 다
% pip3 install django
// 설치가 잘 되었는지 확인한다
% python3 -m django --version
2.2.6
물론, Symlink 등이 걸려 있어서 pip3 대신 pip 일수도 있고 python3 대신 python 이나 py 일수도 있다. 각자의 환경에서 동작하는 무언가가 있을테니 잘 찾아서 장고 프레임웍을 설치하면 된다. python3 를 쓰는 것이 좋은데 아마도 새로 시작하면서 2 를 쓰는 경우는 없을거라 생각한다.
프로젝트 생성
장고가 설치되었다면 django-admin.py 혹은 django-admin CLI 도구를 이용하여 프로젝트 생성을 할 수 있다. 물론, 이 도구는 더 많은 것들을 제공하는 장고 관리의 총아이니 앞으로도 종종 이 도구의 명령을 언급하게 될 것인다.
// 명령도 참 많다. 심지어 Core Command 만 모아서 보여준거라는 친절한 안내가 같이 나와 있다
% django-admin
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).
프로젝트를 시작한다를 영어로 표현하면? startproject 이다. 띄어쓰기는 어디갔을까? 라고 태클은 걸지 말자. 위의 코드 블럭에 붙여 놓은 것처럼 startproject 로 붙여 써야 한다. 영어 수업시간이 아니라 장고 수업시간이니 그렇구나 하고 넘어가자! ㅎㅎ 그럼 프로젝트를 만들고 무엇이 생성되는지 확인해 보자
// 현재 경로는 ./dev/django-study 다.
% django-admin startproject nopd
nopd 라는 폴더가 생성되고 그 안에는 manage.py 가 있고 또 동일한 이름의 폴더 nopd 가 생성되었다. 하위 경로에 생성된 nopd 폴더 하위에는 4개의 python 파일이 생성되었다. 프로젝트에 대한 전반적인 정보를 담고 있는 파일이 settings.py 인데, 프로젝트의 시작은 이 파일에 필요한 내용들을 기술하는 것에서 시작된다고 한다.
폴더명이 동일하게 두개가 생성되는 등 시작부터 뭔가 마음에 들지 않는다. 하지만 먹고 살기 위해서는 장고를 잘 익혀둘 필요가 있으니 절단 신공으로 settings.py 설정에 대한 내용은 다음 포스팅에서 이어가 보도록 하겠다. 다들 알지 않는가? 시작이 반이다. 다만 맨날 시작만 해서 문제지만... 끝까지 함 가보자. 아, 기왕 여기까지 온 김에 실행이라도 한번 해보자!
개발용 웹 서버로
장고 프로젝트 실행하기
// manage.py 를 이용하여 개발 서버를 실행할 수 있다
% python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 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.
October 30, 2020 - 07:37:06
Django version 2.2.6, using settings 'nopd.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
브라우저를 열고 http://127.0.0.1:8000/ 으로 접근하면 아래와 같은 화면을 볼 수 있다. 이야기 했지 않은가? 시작이 반이라고. 벌써 브라우저에 뭔가가 나오기 시작하는 것이 가슴이 웅장해지는 느낌이 들 것이다. 필자도 그랬다. 그런데 가슴만 웅장해지면 안되지 않겠는가? 우리는 계속 공부를 해나가야 한다. 학창시절에 그랬던 것처럼...
이어지는 글들...