본문 바로가기

웹/Django

[Django] 프로젝트(웹사이트) 생성하기, 프로젝트 구조 / 2021.08.19

* 참고 자료 : 코드잇 Django 강의


1. 프로젝트(웹사이트) 생성
장고에서 프로젝트는 하나의 웹사이트를 말한다.

- 디렉토리 생성 명령어

mkdir 디렉터리 이름


- django 프로젝트 생성하기

django-admin startproject 프로젝트 이름


저는 식당관련 웹사이트를 만들 거기 때문에 codeit-django 디렉터리 안에 restaurant라는 이름으로 프로젝트를 만들겠습니다.

django-admin startproject restaurant


2. django 개발 서버 실행
먼저, cd를 이용해 restaurant으로 이동해주고 VScode를 실행해준다.
VScode를 보면 restaurant안에 여러 가지 파일들이 있는데 manage.py를 이용하여 서버를 실행해보자.

2 - 1) 서버를 실행해야하기 전에 해야 할 것이 있는데 먼저, settings.py를 열고 28번째 줄에 ALLOWED_HOSTS라는 리스트에
'*'라는 문자열을 추가해준다.


2 - 2) 개발 서버 실행하기
- django 개발 서버 실행 명령어

python manage.py runserver


그러면 이와 같은 화면이 뜬다.


여기서 Starting development server at 하고 주소가 나오는데 저 주소를 복사하여 브라우저에 실행했을 때,


이러한 화면이 나오면 성공.


* django 서버 실행 오류
저는 서버 실행을 하는 과정에서 ModuleNotFoundError: No module named '_sqlite3'라는 에러가 떠서 고생을 좀 했는데

 

pip install pysqlite3


이 명령어를 실행해 sqlite3을 설치해주고 파이썬을 다시 설치해주니 해결되었다.

3. 프로젝트 구조
다음으로 프로젝트 구조를 살펴보자.
restaurant의 구조는 다음과 같다.

restaurant 구조


3 - 1) RESTAURANT
가장 밖에 있는 대문자로 레스토랑 이라 쓰여있는 프로젝트를 'Project Root'라고 한다.
django 프로젝트의 모든 파일이 담겨 있는 최상위 디렉터리이다.
이름을 마음대로 바꾸어도 상관없다.

3 - 1 - 1) manage.py
프로젝트에서 매니저 역할을 하는 파일이다.
Django 프로젝트 관리를 위한 명령어를 지원하는데, 앱 생성, 데이터베이스 관련 명령, 개발서버 실행 등 여러 기능들을 수행할 수 있다.


3 - 1 - 2) db.sqlite3
프로젝트에서 사용하는 데이터베이스 파일이다.

3 - 2) restaurant
대문자 레스토랑 프로젝트 안에 restaurant 이라는 디렉터리가 있는데, 이것을 'Project App'이라고 한다.
하나의 장고 프로젝트는 여러개의 앱으로 구성되어 있다. 그중에서 Project App은 가장 중심이 되는 App이다.
이름을 바꾸면 다른 파일에서 많은 수정을 해줘야한다.

3 - 2 - 1) __init__.py
파일을 열어보면 아무것도 적혀 있지 않다.


그렇다고 지워도 되는 파일은 아니다.
장고의 앱은 하나의 파이썬 패키지라고 할 수 있다. 파이썬 패키지로 인식되기 위해서는 __init__.py을 무조건 포함하고 있어야 한다. python 3.3 버전 이상부터는 이 파일이 없어도 python 패키지로 인식이 되긴 하지만, python 3.3 버전 이하에서도 문제없이 호환이 될 수 있도록 이 파일을 무조건 적어주자. (하위 버전 호환)

3 - 2 - 2) settings.py
시간대 설정, 데이터베이스 설정, 여러 경로 설정 등 Django 프로젝트의 전반적인 설정을 담당한다.

3 - 2 - 3) urls.py
URL을 보고 알맞은 페이지로 연결해 주는 역할을 한다.

3 - 2 - 4) wsgi.py
"Web Server Gateway Interface"
웹 서버와 python 애플리케이션인 Django가 소통하는데 필요한 일종의 프로토콜이다.