setting.py 큰구조틀

HY_1023·2026년 3월 20일

MENTOS

목록 보기
13/19

settings.py 전체 구조

✅ 전체 한눈에

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개 덩어리로 나눌 수 있어요


1️⃣ 기본 경로 설정

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent
BASE_DIR = 프로젝트 최상위 폴더 경로
= 모든 파일 경로의 기준점

예) BASE_DIR / 'db.sqlite3'
  → 프로젝트폴더/db.sqlite3

2️⃣ 보안 설정

SECRET_KEY = 'django-insecure-td*%-x4sv...'  ← 암호화에 쓰이는 비밀키
                                                  절대 외부에 노출 금지!

DEBUG = True        ← 개발중엔 True, 실제 서비스엔 False
                      True면 오류 발생시 상세 내용 화면에 표시됨

ALLOWED_HOSTS = []  ← 접속 허용할 도메인 목록
                      개발중엔 비워도 됨

3️⃣ 앱 등록 (가장 중요!)

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가 앱을 인식 못함!

4️⃣ 미들웨어

MIDDLEWARE = [
    'SecurityMiddleware',    ← 보안 처리
    'SessionMiddleware',     ← 세션 처리
    'CommonMiddleware',      ← 공통 처리
    'CsrfViewMiddleware',    ← 해킹 방지
    'AuthenticationMiddleware', ← 로그인 인증
    'MessageMiddleware',     ← 메시지 처리
    'XFrameOptionsMiddleware', ← 클릭재킹 방지
]
미들웨어 = 요청과 응답 사이에서
           자동으로 처리해주는 중간 관리자들

요청 들어옴 → 미들웨어들 통과 → View → 미들웨어들 통과 → 응답

지금 단계에서는 "자동으로 보안/인증 처리해주는 것들" 정도로만 알아도 충분해요


5️⃣ URL / Template 설정

ROOT_URLCONF = 'config.urls'  ← 최상위 urls.py 위치 지정
                                 "url 관리는 config/urls.py 가 담당해"

TEMPLATES = [{
    'DIRS': [],          ← Template 폴더 위치
    'APP_DIRS': True,    ← 각 앱 안에서 templates 폴더 자동 탐색
}]

6️⃣ 데이터베이스 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',  ← DB 종류
        'NAME': BASE_DIR / 'db.sqlite3',         ← DB 파일 위치
    }
}
sqlite3  = 파일 하나가 DB 전체인 가벼운 DB
           개발/학습용으로 많이 씀

실제 서비스에서는
→ PostgreSQL, MySQL 같은 걸로 바꿈

7️⃣ 언어 / 시간 / 정적파일 설정

LANGUAGE_CODE = 'ko-kr'      ← 한국어
TIME_ZONE = 'Asia/Seoul'     ← 한국 시간
USE_I18N = True              ← 다국어 지원
USE_TZ = True                ← 시간대 사용

STATIC_URL = 'static/'      ← CSS, JS, 이미지 파일 경로

profile
개발언어를 배우는 과정 기록

0개의 댓글