Django의 Project와 App의 기본 구조 및 설정 파일, 주요 관리 명령어에 대해 알아봅니다.
▶︎Project와 App
Project
- 하나의 웹사이트 단위. 웹사이트를 만들기 위해서는 proejct를 생성해야 한다.
- 하나의 프로젝트는 여러 개의 앱(App)으로 구성된다.
- 생성:
django-admin startproject [프로젝트이름]
- manage.py 실행파일 생성.
- 프로젝트 이름으로 폴더가 생성. (settings.py, urls.py, wsgi.py 파일 포함
App
- 프로젝트 안에서 의미있는 기능 단위.
- ex) 큰 웹사이트의 게시판 기능, 쇼핑몰 기능 등
- 앱은 다른 프로젝트에서도 재활용 가능. (한 프로젝트에서 만들어진 내부 app은 다른 프로젝트에서도 하위 app으로 활용 가능.)
- 생성:
./manage.py startapp [앱이름]
- app 은 manage.py를 이용해 생성.
- 앱 이름으로 폴더가 생성.
- admin.py: 관리자 권한을 가지는 사용자가 볼 수 있는 페이지에 관련된 내용
- models.py: 데이터베이스 모델 정의
- tests.py: 테스트 코드 작성
- views.py: 데이터베이스에서 가져온 데이터를 가공
- migrations/: 데이터베이스 변경 기록 폴더
▶︎settings.py
: 프로젝트 환경 설정 파일.
- DEBUG
- True일 때 디버깅 정보 노출, 개발 중 사용
- 배포 시에는 False로 설정하여 사용자에게 디버그 정보 노출 방지
- INSTALLED_APPS
- 프로젝트에서 사용할 앱들 등록.
- 직접 만든 앱, pip로 설치한 서드파티 앱 모두 가능.
- MIDDLEWARE_CLASSES
- request와 response 사이에서 인증/보안과 관련된 작업 수행.
- 일반적으로 크게 신경 안써도 된다.
- TEMPLATES
- django template 관련 설정. (사용자에게 보여질 화면 구성과 데이터를 관리하는 설정.)
- 실제 뷰에서 보여줄 html파일과 전달할 변수들 관리.
- 사용자에게 보여줄 HTML 파일과 전달할 변수(context) 관리.
- 템플릿 파일 저장 위치 지정.
- 뷰에서 전달하는 변수들과 템플릿 연결 기능 포함.
- DATABASES
- 데이터베이스 연결 설정 (엔진, 주소, 계정 정보 등)
- STATIC_URL
- 정적파일(css, javascript, image 등)의 url 경로 설정.
▶︎manage.py
: 프로젝트 관리 명령어 모음. (전체 프로젝트를 관리하고 db를 보다 효과적으로 사용할 수 있도록 다양한 기능을 제공.)
주요 명령어
startapp [앱이름]
: 앱 생성
runserver
: 개발용 서버 실행
createsuperuser
: 관리자 계정 생성
makemigrations [앱이름]
: 앱 모델 변경사항 감지 후 마이그레이션 파일 생성 (변경사항을 반영하기 위한 데이터베이스 작업을 명령어(쿼리) 형태로 작성한 파일을 만들어 SQL 쿼리를 직접 실행하는 대신, Django가 이해할 수 있는 단계별 데이터베이스 변경 지침서 역할을 함)
migrate
: 마이그레이션 파일을 데이터베이스에 적용
shell
: Django 환경에서 파이썬 쉘 실행 (쉘을 통해 데이터 확인, 조작 가능)
collectstatic
: 여러 앱의 흩어진 정적 파일을 한 곳에 모음