---
description: Django의 작동원리를 7단계로 요약한다면.
---

# \[Django 2] Django는 어떻게 작동할까

undefined

한 html 파일을 웹 서버에 띄우기 위해서, `django`는 어떤 일을 할까? 웹서버에 `HELLO WORLD` 를 출력하는 **가장 간단한 장고 프로젝트**를 통해 장고 내에서 html 파일, 즉 `정보`들이 어떻게 처리되는지 알아보자.

## 1. Django 프로젝트 시작하기

**가상환경이 켜진 상태**에서 아래 명령어를 입력해 프로젝트 폴더를 만든다.

```bash
django-admin startproject [프로젝트 이름]
```

프로젝트 이름을 helloworld 라고 했다고 가정하자.

그러면 helloworld 라는 폴더가 생기고, 그 안에 또 helloworld 폴더와 manage.py 파일이 생성된다. 같은 이름의 폴더가 두 개여서 헷갈릴 수 있으니 상위폴더 이름을 helloworld\_project 같은 식으로 바꿔주는 게 좋다!\
&#x20;**`startproject` 로 생성된 폴더 및 파일들**

> * `helloworld_project`
>   * `helloworld`
>     * `settings.py` : 프로젝트의 환경/구성을 저장하는 파일
>     * `urls.py` : Django 프로젝트의 URL 들을 관리하는 파일
>     * `기타 아직은 덜 중요한 파일들`
>   * `manage.py` :  서버를 작동시키는 중요한 파일

나의 첫 장고 프로젝트(폴더)가 시작됐다. 이제 모든 작업은 `helloworld_project` 에서 이뤄질 것이다. 터미널 경로를 프로젝트 폴더(manage.py가 있는 폴더) 안으로 이동해주자.

## 2. app 만들기

`app`(폴더)는 프로젝트의 구성 단위이다.

나중에 프로젝트가 커지면 기능별로 여러 app을 만들어야하겠지만, 지금 이 프로젝트에서는 hello world를 출력하기 위한 app은 하나만 있으면 된다.

```bash
python manage.py startapp [앱 이름]
```

앱 이름을 `print` 라고 지었다면, 프로젝트 폴더 안에 `print` 라는 폴더가 하나 생겼을 것이다.

### template 폴더 만들기

`print` 앱 폴더 안에 `template` 라는 폴더를 하나 만들어줘야 한다. template는 유저가 보는 화면이라고 생각하면 되는데, `helloworld.html` 같은 html 파일들을 이 폴더에 만들고 관리하면 된다.

`startapp` 까지 완료했을 때의 장고 프로젝트는 아래 같은 모습이어야 한다.

> * `helloworld_project`
>   * `helloworld`
>     * **`urls.py`**&#x20;
>     * **`settings.py`**&#x20;
>     * `기타 아직은 덜 중요한 파일들`
>   * **`manage.py`**
>   * `print`&#x20;
>     * `template 폴더`
>       * **`helloworld.html`**
>     * **`views.py`** : html 파일을 처리하는 '함수'를 작성하는 파일
>     * `기타 아직은 덜 중요한 파일들`

가장 기본적인 장고 프로젝트는 볼드 처리 된 5개의 파일들 간의 연결을 통해 완성된다.

장고의 작동 원리를 알고 싶다면,

`settings.py`, `helloworld.html`, `views.py`, `urls.py` , `manage.py` 파일들끼리 서로 데이터를 어떻게 처리하고 연결하는지 흐름을 이해하면 되는 것이다.

## 3. `Run Django` 7단계

정리하자면, 장고는 **한 프로젝트 폴더와 앱 폴더, 그리고 각 폴더 속 파일들 간의 티키타를 통해 작동**한다. 여기서 가장 중요한 파일들은 위의 5가지이고, 이 파일들 간의 티키타카는 `7단계`로 요약할 수 있다. 즉, 이 7단계의 작업 순서만 알고 있으면 장고 프로젝트를 완성할 수 있는 것이다.

### 1) 프로젝트 생성

### 2) 앱 생성

### 3) 프로젝트와 앱 연결 : `setting.py`

### 4) template 생성 : `helloworld.html`

### 5) 앱 기능 구현 : `views.py`

### 6) URL 요청을 views에 연결 : `urls.py`

### 7) 서버 실행 : `manage.py`

물론, 모든 장고 프로젝트가 이렇게 간단하진 않다. 나중에는 데이터베이스를 관리하기 위해 models.py 파일도 작성해야하고, 앱이 여러 개인 큰 프로젝트를 진행할 때는 url들도 여러 파일로 나눠 관리해야 편하다.

이 7단계의 Django 작동 원리는 장고 프로젝트를 처음 시작하는 입장에서 이해하기 편하도록 정보의 흐름을 최대한 정형화해서 요약한 내용일 뿐이다.

그럼, [다음 글](https://velog.io/@hidaehyunlee/Django%EB%A1%9C-Hello-World-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0)에서 이 **7단계의 작업 방식**을 통해 서버에 `HELLO WOLRD`를 출력하는 프로젝트를 마저 완성해보자!
