settings.py 구조
1. BASE_DIR → 경로 기준점
2. 보안설정 → SECRET_KEY, DEBUG
3. INSTALLED_APPS → 사용할 앱 등록 (핵심!)
4. MIDDLEWARE → 자동 처리 중간관리자들
5. URL/Template → 어디서 찾을지 위치 지정
6. DATABASE → 어떤 DB 쓸지
7. 언어/시간/파일 → 한국어, 서울시간 등
settings.py = Django 프로젝트 전체의 환경설정 파일
여기서 프로젝트의 모든 기본 설정을 담당해요 😊
크게 7개 덩어리로 나눌 수 있어요
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
BASE_DIR = 프로젝트 최상위 폴더 경로
= 모든 파일 경로의 기준점
예) BASE_DIR / 'db.sqlite3'
→ 프로젝트폴더/db.sqlite3
SECRET_KEY = 'django-insecure-td*%-x4sv...' ← 암호화에 쓰이는 비밀키
절대 외부에 노출 금지!
DEBUG = True ← 개발중엔 True, 실제 서비스엔 False
True면 오류 발생시 상세 내용 화면에 표시됨
ALLOWED_HOSTS = [] ← 접속 허용할 도메인 목록
개발중엔 비워도 됨
INSTALLED_APPS = [
'django.contrib.admin', ← 관리자 페이지
'django.contrib.auth', ← 로그인/회원가입 기능
'django.contrib.contenttypes', ← 모델 관리
'django.contrib.sessions', ← 세션 관리
'django.contrib.messages', ← 알림 메시지
'django.contrib.staticfiles', ← CSS/JS 파일 관리
'study', ← 우리가 만든 앱 등록!
]
Django 내장 앱들 = Django가 기본으로 제공하는 기능 모음
우리가 만든 앱 = 직접 만든 study 앱
→ 여기 등록 안 하면 Django가 앱을 인식 못함!
MIDDLEWARE = [
'SecurityMiddleware', ← 보안 처리
'SessionMiddleware', ← 세션 처리
'CommonMiddleware', ← 공통 처리
'CsrfViewMiddleware', ← 해킹 방지
'AuthenticationMiddleware', ← 로그인 인증
'MessageMiddleware', ← 메시지 처리
'XFrameOptionsMiddleware', ← 클릭재킹 방지
]
미들웨어 = 요청과 응답 사이에서
자동으로 처리해주는 중간 관리자들
요청 들어옴 → 미들웨어들 통과 → View → 미들웨어들 통과 → 응답
지금 단계에서는 "자동으로 보안/인증 처리해주는 것들" 정도로만 알아도 충분해요
ROOT_URLCONF = 'config.urls' ← 최상위 urls.py 위치 지정
"url 관리는 config/urls.py 가 담당해"
TEMPLATES = [{
'DIRS': [], ← Template 폴더 위치
'APP_DIRS': True, ← 각 앱 안에서 templates 폴더 자동 탐색
}]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', ← DB 종류
'NAME': BASE_DIR / 'db.sqlite3', ← DB 파일 위치
}
}
sqlite3 = 파일 하나가 DB 전체인 가벼운 DB
개발/학습용으로 많이 씀
실제 서비스에서는
→ PostgreSQL, MySQL 같은 걸로 바꿈
LANGUAGE_CODE = 'ko-kr' ← 한국어
TIME_ZONE = 'Asia/Seoul' ← 한국 시간
USE_I18N = True ← 다국어 지원
USE_TZ = True ← 시간대 사용
STATIC_URL = 'static/' ← CSS, JS, 이미지 파일 경로