---
description: Djnago프로젝트를 시작하는 가장 쉽고 빠른 7가지 단계.
---

# \[Django 3] Hello World 웹사이트 만들기

## 1. project 생성

1.  가상환경이 켜진 상태에서 `helloworld` 라는 프로젝트 폴더를 생성한다.

    ```
    django-admin startproject helloworld
    ```
2. 터미널 경로를 생성된 프로젝트 폴더로 이동한다.

## 2. app 생성

1.  manage.py 파일이 있는 프로젝트 폴더 내에 `print` 앱 폴더를 생성한다.

    ```
    python manage.py startapp print
    ```

## 3. project 와 app 연결하기

app을 만들었지만 project는 그 app의 존재를 아직 모른다. 그래서 app을 만들었다고 등록해주는 절차가 필요하다.

#### helloworld/settings.py 수정

```python
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'print.apps.printConfig',
]
```

settings.py 파일에 INSTALLED\_APPS 영역에 `print.apps.printConfig` 을 추가해준다.

print/apps.py 파일을 열어보면 `printConfig` 라는 클래스가 정의되어 있는데, 그것을 등록해주는 절차이다.

## 4. Template 만들기

template은 유저가 보는 화면이라 생각하면 된다. app폴더 안에 templates폴더를 만들고, template 내부에 html 파일들을 넣어준다.

#### print/templates/helloworld.html

```markup
<h1>
    Hello, world!
</h1>
```

## 5. app 기능 구현하기

`views.py` 파일에서 print 앱의 기능을 구현할 수 있다. # Create your views here 주석 아래에 사용할 함수를 정의해 주면 된다.

#### print/views.py

```python
from django.shortcuts import render

# Create your views here.


def helloworld(request):
    return render(request, 'helloworld.html')
```

print 앱은 특별한 기능이 필요하지는 않을 것 같다. 요청이 들어오면 helloworld.html 파일을 열어주는 `helloworld` **이라는 함수**를 구현했다.

## 6. URL 요청을 views에 연결하기

#### helloworld/urls.py

1.  app 폴더 안에 있는 views.py의 함수를 `import` 해온다.

    ```python
    import print.views
    ```
2.  urlpatterns에 `path`를 추가한다.

    ```python
    urlpatterns = [
        path('admin/', admin.site.urls), # 원래 있던 path
        path('', print.views.helloworld, name='helloworld'),
    ]
    ```

### urlpattern 작성법

path() 함수는 3가지 인수를 받는다.

```python
path(경로, view에 정의된 함수, 이름)
```

* **경로** : 도메인 뒤에 붙는 url 부분이다. 예를 들어 [http://127.0.0.1:8000/](http://127.0.0.1:8000/admin) 뒤에 `admin/` 을 입력하면, 어드민 페이지가 나올 것이다. helloworld.html 과 연결되는 path 는 `' '` 로 아무것도 적지 않았다. 기본 홈화면이 되는 것이다.
* **view에 정의된 함수** : print폴더 속 views파일 속 helloworld 라고 정의된 함수를 실행시키겠다는 의미이다.
*   **이름** : `name='helloworld'`은 이 path의 이름을 helloworld라고 정의한다. 이렇게 정의된 이름은 django프로젝트 어디에서든 helloworld라고 불러서 호출할 수 있다.

    가능한 함수 이름과 path 이름을 일치시켜주는 게 (정신건강에)좋다.

#### 완성된 helloworld/urls.py

```python
from django.contrib import admin
from django.urls import path
import print.views

urlpatterns = [
    path('admin/', admin.site.urls), # 원래 있던 path
    path('', print.views.helloworld, name='helloworld'),
]
```

## 7. 서버 실행하기

프로젝트가 완성됐다! 터미널에 아래 명령어를 입력해 어떤 웹사이트가 만들어졌는지 확인할 수 있다.

```
python manage.py runserver
```

[http://127.0.0.1:8000/](http://127.0.0.1:8000/) 로 브라우저 창을 열어서 확인해보자.

서버를 종료하려면 터미널에서 `ctrl` + `c` 를 누르면 된다.
