2026/04/07 Promise - 3

김기훈·2026년 4월 7일

TIL

목록 보기
184/194
post-thumbnail

진행 현황

  1. 프로젝트 초기화
    Django 6.0.3 버전을 기반으로 config라는 이름의 메인 설정 디렉토리를 성공적으로 구성
  2. 패키지 관리
    Poetry 환경을 구축하여 pyproject.toml 파일에 프로젝트에 필요한 의존성 라이브러리 목록을 명확히 정의
  3. 컨테이너화 준비
    앱을 쉽게 배포하고 실행하기 위해 파이썬 3.13 버전을 바탕으로 하는 Dockerfile 작성 완료
  4. 앱 구조 기획
    config/settings.py 파일의 CUSTOM_APPS 항목에 apps.User, apps.Event, apps.EventMember 등 기획하신 기능별 앱 이름들을 등록

git 연결

.gitignore

.env
__pycache__/
*.py[cod]
media/
db.sqlite3
.venv/
venv/
*.pyc
# -----------------------------------------------------------------------------
# Python 관련 (기본적인 컴파일 파일 및 캐시 제외)
# -----------------------------------------------------------------------------
__pycache__/       # 파이썬이 실행 속도를 높이기 위해 만드는 바이트코드 캐시 폴더입니다.
*.py[cod]          # .pyc, .pyo, .pyd 등 컴파일된 파이썬 파일들을 모두 무시합니다.
*$py.class         # Jython 등의 다른 파이썬 구현체에서 생기는 클래스 파일을 무시합니다.

# -----------------------------------------------------------------------------
# Django 관련 (로컬 데이터 및 설정 제외)
# -----------------------------------------------------------------------------
*.log              # 서버 실행 시 생기는 로그 파일들은 커밋하지 않습니다.
local_settings.py  # 로컬 개발 환경만의 설정이 담긴 파일(있다면)은 보안상 제외합니다.
db.sqlite3         # 로컬 데이터베이스 파일입니다. 서버 DB와 섞이지 않도록 제외합니다.
db.sqlite3-journal # SQLite 임시 저널 파일입니다.
media/             # 사용자가 업로드한 이미지/파일이 저장되는 폴더입니다. (보통 S3 등으로 관리하므로 제외)
staticfiles/       # collectstatic 명령어로 모아진 정적 파일 폴더입니다. (배포 시 생성되므로 제외)

# -----------------------------------------------------------------------------
# 환경 변수 및 가상환경 (가장 중요 - 보안 및 용량)
# -----------------------------------------------------------------------------
.env               # API Key, 비밀번호 등 민감 정보가 담긴 환경변수 파일입니다. 절대 커밋 금지!
.venv/             # Poetry가 프로젝트 내에 생성할 수 있는 가상환경 폴더입니다.
venv/              # 일반적인 가상환경 폴더 이름입니다.
env/               # 또 다른 일반적인 가상환경 폴더 이름입니다.
.idea
# -----------------------------------------------------------------------------
# VS Code 관련 (에디터 설정 제외)
# -----------------------------------------------------------------------------
.vscode/           # VS Code의 개인 사용자 설정(launch.json 등)이 들어있는 폴더입니다. 팀원과 설정 충돌 방지를 위해 제외합니다.
*.code-workspace   # VS Code 워크스페이스 설정 파일입니다.

# -----------------------------------------------------------------------------
# Mac OS 관련 (시스템 파일 제외)
# -----------------------------------------------------------------------------
.DS_Store          # Mac Finder가 폴더마다 생성하는 메타데이터 파일입니다. 윈도우/리눅스 사용자에겐 불필요합니다.

# -----------------------------------------------------------------------------
# 테스팅 및 기타
# -----------------------------------------------------------------------------
.coverage          # 테스트 커버리지 결과 파일입니다.
htmlcov/           # 커버리지 리포트가 생성되는 폴더입니다..env

깃(Git) 초기화 및 현재 상태 저장하기

# 현재 작업 중인 폴더를 깃이 관리하는 로컬 저장소로 초기화합니다.
git init
# 폴더 안의 모든 파일과 변경사항을 다음 저장 목록(Staging Area)에 한 번에 담습니다.
git add .
# 목록에 담긴 파일들을 확정 지으며, 어떤 작업을 했는지 메모와 함께 버전을 생성합니다.
git commit -m "첫 번째 앱 뼈대 및 설정 완료"
# 현재 작업 중인 기본 가지(Branch)의 이름을 main으로 확실하게 지정해 줍니다.
git branch -M main

깃허브(GitHub) 원격 저장소와 연결하기

# 내 컴퓨터의 깃과 깃허브의 원격 저장소를 서로 연결해 주는 명령어
git remote add origin https://github.com/사용자이름/저장소이름.git

# 내 컴퓨터에 저장된 버전 기록들을 깃허브 원격 저장소로 밀어 올려(Push) 백업합니다.
git push -u origin main


깃허브 탬플릿


코드 수정

apps.py(Event기준)

  • settings.py

DJANGO_APPS = [  # 장고 프레임워크가 기본으로 제공하는 앱 목록입니다.
		...
]

THIRD_PARTY_APPS = [  # 외부에서 설치한 라이브러리 앱들입니다.
]

CUSTOM_APPS = [
		...
    "apps.Event",
		...
]

INSTALLED_APPS = (
    DJANGO_APPS + THIRD_PARTY_APPS + CUSTOM_APPS
)
  • apps/Event/apps.py

from django.apps import AppConfig


class EventConfig(AppConfig):
    name = "Event"

——————————————————————————————————————[비교]—————————————————————————————————————————
from django.apps import AppConfig

# Event 앱의 전반적인 설정을 관리하는 설정 클래스
class EventConfig(AppConfig):
    # 데이터베이스에 데이터가 추가될 때 부여되는 고유 번호(기본키)의 타입을 자동으로 지정
    default_auto_field = 'django.db.models.BigAutoField'
    # 장고가 이 앱을 정확히 찾을 수 있도록 폴더 경로를 포함한 전체 이름을 명시
    name = 'apps.Event'

이론적 배경

  • 장고(Django)는 내부적으로 '앱 레지스트리'라는 명부를 관리함
    • settings.py 파일에 앱을 등록하더라도
    • 해당 앱의 고유 설정 파일(apps.py)에 명시된 경로(name)가 일치하지 않으면
      • 장고는 앱을 인식하지 못함
  • 모듈화된 폴더 구조(apps 폴더 하위 배치)를 사용했기 때문에
    • 네임스페이스를 정확히 맞추어 주는 필수적인 설정 과정

profile
안녕하세요.

0개의 댓글