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

업데이트:

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

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

관련 내용 복습하기

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 관련 내용을 담당합니다.