[Django 2] Django는 어떻게 작동할까
Django의 작동원리를 7단계로 요약한다면.
undefined
한 html 파일을 웹 서버에 띄우기 위해서, django
는 어떤 일을 할까? 웹서버에 HELLO WORLD
를 출력하는 가장 간단한 장고 프로젝트를 통해 장고 내에서 html 파일, 즉 정보
들이 어떻게 처리되는지 알아보자.
1. Django 프로젝트 시작하기
가상환경이 켜진 상태에서 아래 명령어를 입력해 프로젝트 폴더를 만든다.
프로젝트 이름을 helloworld 라고 했다고 가정하자.
그러면 helloworld 라는 폴더가 생기고, 그 안에 또 helloworld 폴더와 manage.py 파일이 생성된다. 같은 이름의 폴더가 두 개여서 헷갈릴 수 있으니 상위폴더 이름을 helloworld_project 같은 식으로 바꿔주는 게 좋다!
startproject
로 생성된 폴더 및 파일들
helloworld_project
helloworld
settings.py
: 프로젝트의 환경/구성을 저장하는 파일
urls.py
: Django 프로젝트의 URL 들을 관리하는 파일
기타 아직은 덜 중요한 파일들
manage.py
: 서버를 작동시키는 중요한 파일
나의 첫 장고 프로젝트(폴더)가 시작됐다. 이제 모든 작업은 helloworld_project
에서 이뤄질 것이다. 터미널 경로를 프로젝트 폴더(manage.py가 있는 폴더) 안으로 이동해주자.
2. app 만들기
app
(폴더)는 프로젝트의 구성 단위이다.
나중에 프로젝트가 커지면 기능별로 여러 app을 만들어야하겠지만, 지금 이 프로젝트에서는 hello world를 출력하기 위한 app은 하나만 있으면 된다.
앱 이름을 print
라고 지었다면, 프로젝트 폴더 안에 print
라는 폴더가 하나 생겼을 것이다.
template 폴더 만들기
print
앱 폴더 안에 template
라는 폴더를 하나 만들어줘야 한다. template는 유저가 보는 화면이라고 생각하면 되는데, helloworld.html
같은 html 파일들을 이 폴더에 만들고 관리하면 된다.
startapp
까지 완료했을 때의 장고 프로젝트는 아래 같은 모습이어야 한다.
helloworld_project
helloworld
urls.py
settings.py
기타 아직은 덜 중요한 파일들
manage.py
template 폴더
helloworld.html
views.py
: html 파일을 처리하는 '함수'를 작성하는 파일
기타 아직은 덜 중요한 파일들
가장 기본적인 장고 프로젝트는 볼드 처리 된 5개의 파일들 간의 연결을 통해 완성된다.
장고의 작동 원리를 알고 싶다면,
settings.py
, helloworld.html
, views.py
, urls.py
, manage.py
파일들끼리 서로 데이터를 어떻게 처리하고 연결하는지 흐름을 이해하면 되는 것이다.
3. Run Django
7단계
Run Django
7단계정리하자면, 장고는 한 프로젝트 폴더와 앱 폴더, 그리고 각 폴더 속 파일들 간의 티키타를 통해 작동한다. 여기서 가장 중요한 파일들은 위의 5가지이고, 이 파일들 간의 티키타카는 7단계
로 요약할 수 있다. 즉, 이 7단계의 작업 순서만 알고 있으면 장고 프로젝트를 완성할 수 있는 것이다.
1) 프로젝트 생성
2) 앱 생성
3) 프로젝트와 앱 연결 : setting.py
setting.py
4) template 생성 : helloworld.html
helloworld.html
5) 앱 기능 구현 : views.py
views.py
6) URL 요청을 views에 연결 : urls.py
urls.py
7) 서버 실행 : manage.py
manage.py
물론, 모든 장고 프로젝트가 이렇게 간단하진 않다. 나중에는 데이터베이스를 관리하기 위해 models.py 파일도 작성해야하고, 앱이 여러 개인 큰 프로젝트를 진행할 때는 url들도 여러 파일로 나눠 관리해야 편하다.
이 7단계의 Django 작동 원리는 장고 프로젝트를 처음 시작하는 입장에서 이해하기 편하도록 정보의 흐름을 최대한 정형화해서 요약한 내용일 뿐이다.
그럼, 다음 글에서 이 7단계의 작업 방식을 통해 서버에 HELLO WOLRD
를 출력하는 프로젝트를 마저 완성해보자!
Last updated