Django
Chapter 2-1 Django 앱 생성 및 구조 설명 가이드
Chansman
2025. 4. 30. 13:59
📘 Django 앱 생성 및 구조 설명 가이드
이 강의는 Django(장고) 앱의 생성 과정과 구조에 대한 설명을 제공합니다. 기존에는 url.py만을 사용하여 사이트를 만들었지만, 이제 views.py와 models.py를 함께 사용하여 장고의 기본 구조를 제대로 활용하는 방법을 배웁니다.
앱을 생성하는 방법과, 앱을 재사용 가능한 단위로 구성하는 기준을 설명하며, 이를 통해 프로젝트 간 모듈화 및 코드 재활용성을 높이는 방법을 제시합니다.
또한, settings.py 파일에서 앱을 등록하고 관리하는 다양한 방법을 소개하여 효율적인 프로젝트 관리를 돕습니다.
1️⃣ 📱 앱 생성 및 구조 설명
항목 설명
목표 | url.py, views.py, models.py, templates를 모두 활용하는 장고의 전형적인 구조로 전환 |
이전 상태 | url.py만 사용하여 기능 구현 |
변경 사항 | views.py, models.py까지 포함된 구조 활용 |
👉 터미널 명령어 실행:
python manage.py startapp bookmark
bookmark라는 앱 디렉토리가 생성되며, 장고 앱 개발을 위한 구조가 자동 생성됩니다.
2️⃣ 🗂️ 앱 구조 및 각 파일 역할
파일 역할 설명
models.py | DB와 관련된 테이블과 컬럼을 정의 (ORM 매핑) |
views.py | URL 요청을 처리하고 템플릿에 데이터를 전달하는 메인 로직 담당 |
tests.py | 테스트 코드를 작성하여 기능 검증 |
apps.py | Django App 설정 정보 포함 |
admin.py | Django Admin 사이트에서 사용할 모델 설정 |
__init__.py | Python 패키지로 인식되기 위한 초기화 파일 |
migrations/ | 모델 변경 사항에 따른 DB 마이그레이션 기록 저장 |
3️⃣ ⚠️ 앱 생성 시 주의사항
- settings.py의 INSTALLED_APPS에 앱 등록 필수
- 등록하지 않으면 앱이 인식되지 않고 ModuleNotFoundError 발생 가능
- 리스트의 마지막 항목 뒤에도 콤마(,)를 붙이는 것 권장
✅ 예시:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...,
'bookmark', # 내가 만든 앱
]
☑️ 콤마를 붙여주면 Git 충돌 방지에도 효과적입니다.
4️⃣ 🧩 Django 앱 구조와 재사용 기준
장고에서 앱은 모듈화된 단위로 설계되어야 합니다.
핵심 개념 설명
모듈화 | 앱을 독립적으로 만들어 다른 프로젝트에서도 복사·재사용 가능해야 함 |
기능 독립성 | 예: user 앱에는 로그인, 회원가입, 비밀번호 찾기만 포함 |
확장성 | 블로그 앱이라면 게시글, 댓글, 태그 등 핵심 기능을 함께 포함 |
✅ 이렇게 하면 유지보수, 재사용성, 협업에 매우 유리합니다.
5️⃣ 📂 settings.py 앱 구조화 관리법
🌟 앱 리스트를 구분해서 관리하면 가독성과 유지보수가 쉬워집니다.
DJANGO_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
OWN_APPS = [
'bookmark',
]
INSTALLED_APPS = DJANGO_APPS + OWN_APPS
📌 또는 아래와 같이 주석을 활용한 구분도 가능합니다:
INSTALLED_APPS = [
# Django 기본 앱
'django.contrib.admin',
...
# 📦 내가 만든 앱
'bookmark',
]
🎯 정리
- 앱은 기능 단위로 분리하고, 재사용 가능한 구조로 만들어야 한다 ✅
- settings.py에서 앱을 구분해 관리하면 협업과 유지보수에 유리하다 🔧
- 앱 생성 시 디렉토리 구조와 각 파일의 역할을 명확히 이해해야 한다 📁
🧠 이렇게 체계적으로 앱을 구성하면 더 큰 프로젝트에서도 유연하게 대응할 수 있습니다!