[파이썬 장고(1)] 프로젝트 생성하기, 기본 폴더 설명

업데이트:

파이썬 장고(1) 프로젝트 생성하기, 기본 폴더 설명

관련 내용 복습하기

0. 기본 사항

파이썬 가상환경이 설정되어 있어야합니다. 그리고 장고가 설치되어 있어야 합니다. 먼저 파이썬 가상환경을 활성화 시켜줍니다. 제 가상환경 이름은 savannah 입니다.

1. 프로젝트 생성하기

여기서 프로젝트라는 것은 하나의 웹사이트를 의미합니다. 이를 위해 프로젝트를 생성하기 위한 디렉토리를 만들겠습니다. 저는 mysite01이라고 이름 짓겠습니다.

(savannah)$ mkdir mysite01

디렉토리를 생성했으면 해당 디렉토리로 이동해 프로젝트를 다음과 같이 생성해줍니다.

(savannah)$ cd mysite01
(savannah)$ django-admin startproject config .

프로젝트를 생성하고 디렉토리 구조를 보면 다음과 같습니다.

(savannah)$ ll
total 8
drwxr-xr-x  7 cheolwon  staff   224B  5 12 14:37 config/
-rwxr-xr-x  1 cheolwon  staff   662B  5 12 14:37 manage.py*

저것들이 뭔지는 나중에 알아보고 일단 서버를 실행해보겠습니다.

(savannah)$ 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.
May 12, 2022 - 05:39:20
Django version 4.0.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

이러면 서버가 가동 된 것인데, 크롬같은 웹 브러우저를 이용해 http://127.0.0.1:8000/ 를 입력하면 성공적으로 웹사이트를 띄워진 것을 볼 수 있습니다.

2. 장고의 기본 파일 구성

mysite01 프로젝트 디렉토리를 보면 다음과 같이 config라는 디렉토리와 manage.py라는 파일을 볼 수 있습니다. 이름만 보면 config는 설정과 관련된 디렉토리이고 manage.py는 뭔가 관리하는 파일같은 느낌이 듭니다.

(savannah)$ ll
total 8
drwxr-xr-x  7 cheolwon  staff   224B  5 12 14:37 config/
-rwxr-xr-x  1 cheolwon  staff   662B  5 12 14:37 manage.py*

config 디렉토리로 이동해 어떤 파일이 있는지 살펴봅시다.

(savannah)$ cd config
(savannah)$ ll
total 32
-rw-r--r--  1 cheolwon  staff     0B  5 12 14:37 __init__.py
-rw-r--r--  1 cheolwon  staff   389B  5 12 14:37 asgi.py
-rw-r--r--  1 cheolwon  staff   3.1K  5 12 14:37 settings.py
-rw-r--r--  1 cheolwon  staff   748B  5 12 14:37 urls.py
-rw-r--r--  1 cheolwon  staff   389B  5 12 14:37 wsgi.py

먼저 init.py 파일은 해당 디렉토리가 패키지라는 것을 선언하기 위한 파일로 무시해도 됩니다. 다음으로 asgi.py라는 파일이 있는데 이를 설명하기 전에 wsgi.py를 먼저 설명하겠습니다. 장고 웹 애플리케이션은 nginx나 아파치 서버와 같은 웹서버와 연결을 해야하는데 이때 연결고리가 되는게 sgi(server gateway interface)입니다. 이때 wsgi.py는 동기적 처리를 담당하고 asgi.py는 비동기적 처리를 담당합니다. asgi는 Asynchronous server gateway interface의 약자입니다. settings.py는 환경 설정에 관한 파일이며 urls.py는 웹 사이트를 구성하는 url 관련 내용을 담당합니다.